【问题标题】:how can I use readyonstatechange function to return data如何使用 readyonstatechange 函数返回数据
【发布时间】:2014-10-22 04:30:43
【问题描述】:

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

【问题讨论】:

  • 由于您有一个 jquery 标签,我建议您考虑使用查询来进行 ajax 调用。它将简化您的生活。
  • @HeadCode 我可以使用 $.ajax() 吗???
  • 我在下面添加了另一个答案,以防你想看看。

标签: javascript jquery xmlhttprequest httprequest onreadystatechange


【解决方案1】:

改变你的回调方法:

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

【讨论】:

    【解决方案2】:

    我不理解您 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);
    

    【讨论】:

      猜你喜欢
      • 2013-11-26
      • 2019-10-08
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      • 2018-05-24
      相关资源
      最近更新 更多