逃避JavaScript中的一些字符

时间:2011-10-14 10:56:06

标签: javascript escaping

我的遗留应用程序中有一个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调用也无法正常工作。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

rec和/或scopedCallbackQRSI变量可能在本地范围内定义(因此无法从全局范围访问)。当使用字符串化函数作为第一个参数调用setTimeout时,该函数在window的范围内执行。

要维护范围(并且能够使用局部变量),请将代码包装在函数中,并将其作为第一个参数传递给setTimeout

setTimeout(function(){
    i2b2.CRC.ajax.getQueryResultInstanceList_fromQueryResultInstanceId("CRC:QueryStatus", {qr_key_value: rec.QRS_ID}, scopedCallbackQRSI);
}, 50000);