0

我想使用 javascript request 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 以及如何访问返回的数据?

4

2 回答 2

0

我不明白您 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);
于 2014-10-22T18:30:53.613 回答
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);            
}
于 2014-10-22T04:42:32.217 回答