为什么我不能从Ajax函数返回responseText?

时间:2010-09-17 02:15:16

标签: javascript ajax return alert responsetext

这是我的Ajax功能的一部分。由于某种原因,我无法弄清楚,我能够 alert() responseText但无法返回 responseText。有人可以帮忙吗?我需要在另一个函数中使用该值。

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

3 个答案:

答案 0 :(得分:5)

您将无法处理从异步回调返回的返回值。您应该直接处理回调中的responseText,或者调用辅助函数来处理响应:

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

function handleResponse (response) {
    alert(response);
}

答案 1 :(得分:0)

怎么样:

function handleResponse (response) {
    return response;
}

返回未定义的同步和异步模式

答案 2 :(得分: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();
}

发送回调函数名作为此函数的第二个参数。 您可以获取该功能的响应文本。简单。但是你无法直接从异步调用中返回任何内容。