在身体标记下的index.html
:
<a href="javascript:setTempInc()">+</a> <a href="javascript:setMode(0)">-</a>
并在<head><script type="text/javascript">:
下
var url = "get.php";
function ajaxRequest()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
var 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()
{
var oldUrl = url;
url = url + "9001" + jsondata.y;
ajaxRequest();
url = oldUrl;
}
我不明白问题出在哪里。 url
是一个字符串,jsondata.y
是一个int,但脚本不起作用!
这个功能确实如此:
function setMode(val)
{
var oldUrl = url;
url = url + "91" + val + "000";
ajaxRequest();
url = oldUrl;
}
答案 0 :(得分:2)
我会认为
var jsondata = eval("(" + xmlhttp.responseText + ")");
无法调用
url = url + "9001" + jsondata.y;
因为它只在ajaxRequest
函数的范围内定义。
答案 1 :(得分:-1)
在函数外部设置变量,以用作全局变量!
这可能会奏效:
(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
以避免常见的安全问题