0

兄が書いたコードは以前は機能していましたが、誤って変更したと思います。おそらく、兄がXMLデータを返さない理由がわかるでしょう。

function CheckFromTo(From,To) 
{
    //alert(From + "," + To);
    var xmlHttp = null;
    var Url = "http://www.fpl.co.il/bo/info/CheckFromTo.aspx?FROM=" + From + "&TO=" + To + "";
xmlHttp = new XMLHttpRequest(); 
    xmlHttp.onreadystatechange = ProcessRequest;
    xmlHttp.open( "GET", Url, true );
    xmlHttp.send(null);
    return (ProcessRequest());


    function ProcessRequest() 
    {
            if ( xmlHttp.readyState == 4 && xmlHttp.status == 200 ) 
            {
                    var response = xmlHttp.responseText;
                    return response;    
            }
    }
}
4

1 に答える 1

1

XMLHttprequestオブジェクトを見てください

xmlHttp.open( "GET", Url, true );  <-- the true Boolean

openメソッドの真のブール値は、非同期呼び出しを使用していることを意味します。つまり、値を返すことはできません。非同期プログラミングへようこそ。

なぜ未定義を返すのですか?

統計が200でなく、readystateが4でない場合、ProcessRequestで何が起こりますか?何も返さないため、未定義です。

非同期呼び出しを操作するときは、コールバック関数を使用する必要があります。これは、ロジックを複数のステップに分割することを意味します。

于 2012-11-05T14:44:39.253 に答える