我的遗留应用程序中有一个ajax调用:
i2b2.CRC.ajax.getQueryResultInstanceList_fromQueryResultInstanceId(
"CRC:QueryStatus", {qr_key_value: rec.QRS_ID}, scopedCallbackQRSI
);
我想在setTimeout
方法中添加此Ajax请求。要转义"
,我添加了\
。我想出了以下几行:
setTimeout("i2b2.CRC.ajax.getQueryResultInstanceList_fromQueryResultInstanceId(\"CRC:QueryStatus\", {qr_key_value: rec.QRS_ID}, scopedCallbackQRSI)",50000);
现在我没有在控制台上收到任何错误,但Ajax调用也无法正常工作。
我错过了什么吗?
答案 0 :(得分:1)
rec
和/或scopedCallbackQRSI
变量可能在本地范围内定义(因此无法从全局范围访问)。当使用字符串化函数作为第一个参数调用setTimeout
时,该函数在window
的范围内执行。
要维护范围(并且能够使用局部变量),请将代码包装在函数中,并将其作为第一个参数传递给setTimeout
:
setTimeout(function(){
i2b2.CRC.ajax.getQueryResultInstanceList_fromQueryResultInstanceId("CRC:QueryStatus", {qr_key_value: rec.QRS_ID}, scopedCallbackQRSI);
}, 50000);