嵌套Javascript函数(re:onreadystatechage)
救命啊!我的一个Javascript函数有一个问题,它有一个内部Javascript函数,由“onreadystatechange”驱动 因此,在我的主要JS代码中,我所要做的就是在该函数运行时计算jsonWR.SURG.EXIST\u IND的值。当INNERretval警报运行时,该值将正确输出到1…这就是我所期望的。然后就在我返回主surgeryScheduled()函数末尾的值之前,ENDretval表示该值现在为0 我确信我遗漏了一些基本的东西,所以有人可以帮助我 另外,在调用surgeryScheduled()函数时,我将一个变量设置为返回值:嵌套Javascript函数(re:onreadystatechage),javascript,onreadystatechange,Javascript,Onreadystatechange,救命啊!我的一个Javascript函数有一个问题,它有一个内部Javascript函数,由“onreadystatechange”驱动 因此,在我的主要JS代码中,我所要做的就是在该函数运行时计算jsonWR.SURG.EXIST\u IND的值。当INNERretval警报运行时,该值将正确输出到1…这就是我所期望的。然后就在我返回主surgeryScheduled()函数末尾的值之前,ENDretval表示该值现在为0 我确信我遗漏了一些基本的东西,所以有人可以帮助我 另外,在调用surg
var q = 0;
q=surgeryScheduled(<someID>);
alert("q:"+q);
}这可能是因为在清除ENDRetval警报时,ajax请求已经完成,readystatechange函数在调用下一个警报之前有时间设置
retval
。删除ENDRetval警报并测试,但是ENDRetval警报在AJAX调用之外……这还会有任何影响吗?另外一个问题是,我设置为SurgerySpeduled()运行结果的外部变量被设置为1…我只是不确定这是因为SurgerySpeduled()运行完成,还是因为我刚刚收到ENDRetval警报,试图查看函数返回的值。
function surgeryScheduled(srgnID){
var srgnPrsnlID = srgnID;
var sdt = document.getElementById('sdt').value;
var sdtc = sdt.toUpperCase();
var edt = document.getElementById('edt').value;
var edtc = edt.toUpperCase();
var paramString;
paramString =""
paramString += '^MINE^,'
+ srgnPrsnlID
+ ',^'
+ sdtc
+ '^,^'
+ edtc
+ '^'
var WRInfo = new XMLCclRequest();
//; Call the ccl progam and send the parameter string
WRInfo.open("GET", "CH_MP_HAVE_SURGERY_SCHED");
WRInfo.send(paramString);
//; Get the response
WRInfo.onreadystatechange = function () {
if (WRInfo.readyState == 4 && WRInfo.status == 200) {
var jsonWRResp = WRInfo.responseText;
if (jsonWRResp != undefined && jsonWRResp.length !=0) {
jsonWR = eval('(' + jsonWRResp + ')');
}
//; Make sure everything checks out, then return bool
if (jsonWR){
retval = jsonWR.SURG.EXIST_IND;
alert("INNERretval:"+retval);
}//;jsonWR
}//;WRInfo.readyState == 4 && WRInfo.status == 200
}//;WRInfo.onreadystatechange
alert("ENDRetval:"+retval);
return retval;