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 に答える