在JavaScript中转义某些字符

在JavaScript中转义某些字符,javascript,escaping,Javascript,Escaping,我在遗留应用程序中有一个ajax调用: i2b2.CRC.ajax.getQueryResultInstanceList_fromQueryResultInstanceId( "CRC:QueryStatus", {qr_key_value: rec.QRS_ID}, scopedCallbackQRSI ); 我想在setTimeout方法中添加这个Ajax请求。为了逃避“我添加了\。我想出了以下一行: setTimeout("i2b2.CRC.ajax.getQueryResult

我在遗留应用程序中有一个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调用也不起作用


我遗漏了什么吗?

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

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

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

是的,它们是在本地范围内定义的。我想Russ解决方案看起来有点简单。Russ的“解决方案”“不起作用,因为它与您当前的代码基本上没有区别。我尝试了您的解决方案,没有出现错误,但似乎没有触发Ajax请求。@Ajinkya此解决方案应该可以解决您的主要问题,如果请求没有触发,则是另一个问题。