我想从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+"");
}
答案 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
元素的设置。