如何使用readyonstatechange函数返回数据

how can I use readyonstatechange function to return data

本文关键字:返回 数据 函数 readyonstatechange 何使用      更新时间:2023-09-26

我想使用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");

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

更改方法以进行回调:

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);            
}

我不理解你的URL中的".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);