Javascript 为什么';这个使用url的ajax函数不能工作吗?
在body标记下的Javascript 为什么';这个使用url的ajax函数不能工作吗?,javascript,html,ajax,json,Javascript,Html,Ajax,Json,在body标记下的index.html中: <a href="javascript:setTempInc()">+</a> <a href="javascript:setMode(0)">-</a> 我不明白问题出在哪里url是一个字符串,jsondata.y是一个int,但脚本不起作用 但是,此函数执行以下操作: function setMode(val) { var oldUrl = url; url = url + "91"
index.html
中:
<a href="javascript:setTempInc()">+</a> <a href="javascript:setMode(0)">-</a>
我不明白问题出在哪里url
是一个字符串,jsondata.y
是一个int,但脚本不起作用
但是,此函数执行以下操作:
function setMode(val)
{
var oldUrl = url;
url = url + "91" + val + "000";
ajaxRequest();
url = oldUrl;
}
我认为
var jsondata = eval("(" + xmlhttp.responseText + ")");
无法在上调用
url = url + "9001" + jsondata.y;
因为它仅在函数的作用域内定义。设置函数外部的变量,以用作全局变量 这可能会奏效:
(function() {
var url = "get.php";
var oldUrl = '';
var jsondata = '';
function ajaxRequest()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
jsondata = eval("("+xmlhttp.responseText+")"); //retrieve result as an JavaScript object
document.getElementById("y").innerHTML = jsondata.y;
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function setTempInc()
{
oldUrl = url;
url = url + "9001" + jsondata.y;
ajaxRequest();
url = oldUrl;
}
})();
添加了
Closure
以避免常见的安全问题改进您的问题标题,这样,更多的人可以帮助您!请提供您收到的错误。您是否检查了javascript控制台中的错误?您使用的是哪个浏览器?实际上,范围甚至更小:onreadystatechange
处理程序。我没有提供下一票,但我认为这是因为a)你没有通过这样做添加任何东西,b)全局变量应该像瘟疫一样避免。@MartyWallace这解决了问题,而且,没有全局变量我什么都做不了,在这种情况下,@MartyWallace添加了闭包
,因此,全局变量将“更安全”。这并不是真正的安全问题,如果一切都是全局的(冲突等),则只会出现代码可维护性问题。
(function() {
var url = "get.php";
var oldUrl = '';
var jsondata = '';
function ajaxRequest()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
jsondata = eval("("+xmlhttp.responseText+")"); //retrieve result as an JavaScript object
document.getElementById("y").innerHTML = jsondata.y;
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function setTempInc()
{
oldUrl = url;
url = url + "9001" + jsondata.y;
ajaxRequest();
url = oldUrl;
}
})();