6

これが私の Ajax 関数の一部です。私が理解できない何らかの理由で、私はalert() responseText を返すことはできますが、responseText を返すことはできません。誰でも助けることができますか?その値を別の関数で使用する必要があります。

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

3 に答える 3

5

非同期コールバックから返される戻り値を処理することはできません。responseTextコールバック内で直接処理するか、ヘルパー関数を呼び出して応答を処理する必要があります。

http.onreadystatechange = function () {
    if (http.readyState == 4 && http.status == 200) {
        handleResponse(http.responseText);
    }
}

function handleResponse (response) {
    alert(response);
}
于 2010-09-17T02:18:25.437 に答える
0

どうですか :

function handleResponse (response) {
    return response;
}

同期モードと非同期モードでは undefined を返します

于 2012-10-29T00:52:35.007 に答える
0
function getdata(url,callback)
{
    var xmlhttp;
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
         var result = xmlhttp.responseText;
         callback(result)
        }
      }
    xmlhttp.open("POST",url,true);
    xmlhttp.send();
}

この関数の 2 番目の引数としてコールバック関数名を送信します。その関数の応答テキストを取得できます。単純。ただし、非同期呼び出しから直接何かを返すことはできません。

于 2014-06-19T11:53:59.447 に答える