我有这段代码:
...
var aData = request.responseXML.getElementsByTagName('data')[0];
var sDescription = aData.getElementsByTagName('description')[0].firstChild.data;
alert(escape(sDescription));
document.getElementById('tempLabourLineDescription').value = sDescription;
...
sDescription输出:SUPPORT ASSY-FUEL TANK MOUNTING, R&R (LH) (L-ENG)
我认为我想在这里做的很明显(将sDescription
放入名为tempLabourLineDescription
的字段中,但这样做无效。
但是,如果我在我的php脚本中替换或删除该字符串中的& -char,则一切正常。所以我想,只是逃避了咒语。但那不会奏效。 警告字符串不起作用,直到我删除& -character。
这是做什么的?当它出自xml文件时,sDescription不是字符串吗? 我该如何解决这个问题?
答案 0 :(得分:2)
答案就在这个片段中:
var aData = request.responseXML...
您期待XML。一个&本身不是合法的XML。你需要输出你的结果:
支持组件 - 燃料箱安装,R& amp; R(LH)(L-ENG)
答案 1 :(得分:1)
在没有看到输出脚本的情况下很难判断,但首先要尝试掩盖&符号:&
但更简洁的方法是将CDATA添加到XML输出中:
<data><![CDATA[SUPPORT ASSY-FUEL TANK MOUNTING, R&R (LH) (L-ENG)]]></data>
客户端的XML解析器应该理解它没问题。
答案 2 :(得分:0)
使用HTML eqv转义&符号。 &
答案 3 :(得分:0)
如果您无法更改服务器的XML输出(这不是您的应用程序或其他问题),那么“黑客”修复将是:
function htmlizeAmps(s){
return s.replace(/\x26/g,"&"); //globalreplace "&" (hex 26) with "&"
}
document.getElementById('tempLabourLineDescription').value = htmlizeAmps(sDescription);