[英]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.