簡體   English   中英

AJAX發送發布請求,不能將值返回給其他函數嗎?

[英]AJAX send post request,can't return the value to other function?

我想從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+"");
}

您根本無法從異步方法返回結果。

您唯一可以做的就是將另一個函數(“回調”)排隊, 函數將在到達時隨結果一起調用。

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元素的myDiv

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM