AJAX发送post请求,不能将值返回给其他函数?

时间:2012-02-02 11:51:54

标签: javascript ajax

我想从onreadystatechange = function(){}返回一个json对象,但是我失败了。 你能给我一个方法吗? 例如,当我调用函数getIntervention(startdate,enddate)时。那么“onreadystatechange = function(){}”中的json数据将返回哪里?

[code=JScript][/code]
function getIntervention(startdate,enddate)
{
var xmlhttp = false;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  if (XMLHttpRequest.overrideMimeType)
  {
  XMLHttpRequest.overrideMimeType("text/xml");
  }
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
if(!xmlhttp)
 {
window.alert("can't create!");
return false;
}   
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
  var jsondata=eval('('+xmlhttp.responseText+')');
  document.getElementById("myDiv").innerHTML=jsondata.nbMissions;
  ***return jsondata;***
  }
  else
document.getElementById("myDiv").innerHTML=xmlhttp.status+"-"+xmlhttp.readyState;
  }
xmlhttp.open("POST","proxy.jsp",true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.send("url=http://aqueduc.kelcode.com/proc/gw.php&requestName=getIntervention&uid=UID_GATEWAY&startDate="+startdate+"&endDate="+enddate+"");
}

1 个答案:

答案 0 :(得分:0)

您只是无法从异步方法返回结果。

你唯一能做的就是排队另一个函数(一个“回调函数”),该函数会在到达时调用结果。

FWIW,如果你使用jQuery,你的整个代码就是:

function getIntervention(startdate, enddate) {
     return $.ajax({
         url: 'proxy.jsp', 
         data: {
             url: 'http://aqueduc.kelcode.com/proc/gw.php',
             requestName: 'getIntervention',
             uid: UID_GATEWAY,
             startDate: startdate,
             endDate: enddate
        });
};

getIntervention(a, b).done(function(jsondata) {
    // jsondata will be your data, already parsed
});

我省略的唯一一点是myDiv元素的设置。