0

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;
}
4

2 回答 2

2

我会认为

var jsondata = eval("(" + xmlhttp.responseText + ")"); 

无法拨打电话

url = url + "9001" + jsondata.y;

因为它仅在ajaxRequest函数范围内定义。

于 2012-12-23T01:58:46.100 回答
-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以避免常见的安全问题

于 2012-12-23T02:02:01.010 回答