我已生成内联代码,可将值分配给javascript数组。数组的一个元素应设置为“c:\ folder \ somefilename”。这个陈述是巨大的,所以为了简洁我最省略了:
<SCRIPT type="text/javascript">
var StepsList = {"steps": [
{
"id": "RST4551509111516131001035411012110410849",
"stepAudio": "",
"screenImage": "IO1A.PNG",
"demoNote": "",
"controlRect": {
"top": "297",
"left": "256",
"right": "277",
"bottom": "318"
},
"valueText": "c:\uploadfile.txt",
"label": "Presentation Server File"
[snipped]
</SCRIPT>
在代码生成之前,从用户输入捕获valueText元素的内容“c:\ uploadfile.txt”。当此代码在Chrome,Firefox,IE5,IE6或Safari中执行时,文字不会被解析并且只是正确地分配给数组。 IE7,8和9抛出错误“预期的十六进制数字”,将“\ u”视为转义序列。
我不希望javascript解析转义字符的文字。我尝试了旧的并将其放入CDATA标签。这个问题有解决方法吗?
TIA, 埃迪
答案 0 :(得分:2)
如果您的字符串包含文字反斜杠,则必须对其进行转义。例如:
{"valueText": "c:\\uploadfile.txt"}
如果您在服务器上使用库创建JSON,它将自动转义。也就是说,请不要手工生成JSON。
答案 1 :(得分:1)
你试过这个吗?:
"valueText" : "c:\\uploadfile.txt"
答案 2 :(得分:0)
This MSDN page表示在JScript(IE)中处理此问题的正确方法是使用两个反斜杠。
注意: 如果你想在字符串中使用文字文本\ u,那么使用两个反斜杠 - (\ u) - 一个来逃避第一个反斜杠。