如何使用readyonstatechange函数返回数据

时间:2014-10-22 04:30:43

标签: javascript jquery xmlhttprequest httprequest onreadystatechange

我想使用javascript请求xmlhttp来触发java动作 所以我使用以下函数作为函数调用并返回数据,但是不能返回响应,因为我在其他内部函数中写了return语句。

function loadXMLDoc(action,request)
{
var act = action+".action"+request;
console.log("load action");
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)
    {
        return JSON.parse(xmlhttp.responseText);            

    }
    else{

    }
  };

  xmlhttp.open("GET",act,true);
  xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  xmlhttp.send();

}

来电者功能......

var data = loadXMLDoc("load","?reuqest=request");

我应该在哪里写回报?如何访问返回的数据?

2 个答案:

答案 0 :(得分:0)

更改您的方法以进行回调:

function loadXMLDoc(action,request, callback)

将回复传递给loadXMLDoc,如

loadXMLDoc("load","?reuqest=request", function(data) {
  console.log(data);
});

并在成功时调用回调:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
    callback(xmlhttp.responseText);            
}

答案 1 :(得分:0)

我不理解你网址中的“.action”,但是Jquery的答案可能是这样的

function loadXML(url, cb){
    $.get(url, function(data){
        cb(data);
    });
}

function myFunc(data){
    alert(data);
}

loadXML("http://www.example.com/test.xml", myFunc);