var post = 10;
function load_more(str) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("add").innerHTML = document.getElementById("add").innerHTML + xmlhttp.responseText;
}
};
var post = post + 10;
xmlhttp.open("GET", "fetch_more.php?number=" + post , true);
xmlhttp.send();
}
当我加载网站时,我希望浏览器定义要发布的值 10,并且不执行任何其他操作,直到我按下一个调用 load_more() 函数的按钮,该函数将该值增加 10 并通过 Ajax 将其传递给 PHP。
期望的行为是在网站上发布 10 个帖子,然后每次按下按钮时再加载 10 个帖子。
但 PHP 只是抛出 MySQL 错误,并且日志显示 post var 为 NaN。
The line
var post = post + 10;
是这里的罪魁祸首。 JavaScript 有一个行为叫做hoisting https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/var#var_hoisting,这本质上意味着您的变量始终在作用域的顶部声明。
因此,在您的代码中,会发生以下情况:
var post = 10;
function load_more(str) {
var post; // `post` is now undefined
//...other code
post = post + 10; // undefined + 10 evaluates to NaN
}
我希望你能看到post
在函数的开头重新定义,post
is undefined
当你使用它时post + 10
, 什么导致post = post + 10
评估为NaN
(since undefined + 10
评估为NaN
).
要解决您的问题,只需删除var
从前面:
post = post + 10;
or:
post += 10;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)