在Ajax请求之后将变量传递给回调

时间:2010-09-04 23:17:22

标签: ajax json callback request

除了打印结果之外,执行Ajax请求(JS-> PHP)之后是否有更优雅的方式传递变量?

打印可能会有点混乱,并且在返回值方面也没有很大的灵活性(例如难以传递对象)。

另外,我在我的一个Ajax请求回调中打印了这个随机空间,我无法弄清楚它来自哪里。传递序列化变量或类似的东西不存在这个问题,对吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

以{url:“”形式传递属性,方法:“”,数据:{...},回调:函数(){}}

在回调中你可以做很多事情,google“javascript closures”。

希望这有帮助。

var ajax=function(){
  try{
    var xml       =new XMLHttpRequest();
    var args      =arguments;
    var context   =this;
    var multipart ="";

    xml.open(args[0].method,args[0].url,true);

    if(args[0].method.search(/post/i)!=-1){
      var boundary=Math.random().toString().substr(2);
      xml.setRequestHeader("content-type","multipart/form-data; charset=utf-8; boundary="+boundary);
      for(var key in args[0].data){
        multipart+="--"+boundary+"\r\ncontent-Disposition: form-data; name="+key+"\r\ncontent-type: application/octet-stream\r\n\r\n"+args[0].data[key]+"\r\n";
      }
      multipart+="--"+boundary+"--\r\n";
    }

    xml.onreadystatechange=function(){
      try{
        if(xml.readyState==4){
          context.txt=xml.responseText;
          context.xml=xml.responseXML;
          args[0].callback();
        }
      }
      catch(e){}
    }

    xml.send(multipart);
  }
  catch(e){}
}

如果您想获得回复,可以使用:

var response={}; ajax.call(response,{...args...})

您可以通过response.txt或response.xml检索所有数据。