1

誰かが私の質問に答えるのを手伝ってくれるかどうか疑問に思いました.yam_send関数内のネストされた関数内で定義されているため、「データ」からxmlコンテンツを取得する必要があります.returnを使用して変数を関数「GetBasicStatus」に戻そうとしています. 'しかし、それは完全には行きません.誰かがこれに光を当てることができます. これが明らかな解決策である場合は申し訳ありませんが、少し初心者です。

function GetBasicStatus()

    {
        //do some stuff & define variable "command"
        data = yam_send(command);

        if (window.DOMParser)
        {
            parser=new DOMParser();
            xmlDoc=parser.parseFromString(data,"text/xml");
        }
        else    // Internet Explorer
        {
            xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async=false;
            xmlDoc.loadXML(data);
        }
    }

    function yam_send(str)
    {

        var xmlhttp;

        if (window.XMLHttpRequest)

        {// code for IE7+, Firefox, Chrome, Opera, Safari

        xmlhttp=new XMLHttpRequest();

        }

    else

        {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }


    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            var data=xmlhttp.responseText;
            return data;
        }


    }
    xmlhttp.open("GET","test.php?str",true);
    xmlhttp.send();
    }
4

1 に答える 1

1

xmlhttp.onreadystatechangeコールバックとして提供した関数。イベントが発生したときに実行され、「親」関数に何も返すことができません。

親関数でいくつかの変数を作成し、コールバックでそれに値を割り当てることができます。または、次のように親関数をコールバックとして使用します。

var xmlResponse = null; //variable for usage outside of GetBasicStatus
function GetBasicStatus(data) {
    xmlResponse = data; //now you can use it.
    if (window.DOMParser)
    {
        parser=new DOMParser();
        xmlDoc=parser.parseFromString(data,"text/xml");
    }
    else    // Internet Explorer
    {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async=false;
        xmlDoc.loadXML(data);
    }
}

function yam_send(str)
{
    var xmlhttp;

    if (window.XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        }
    else
        {
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }

    xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                var data=xmlhttp.responseText;
                GetBasicStatus(data);
            }
        }
    xmlhttp.open("GET","test.php?str",true);
    xmlhttp.send();
}
于 2012-11-05T20:43:35.167 に答える