返回数据中的javascript&符号(&)不会显示为值

时间:2010-01-26 17:12:22

标签: javascript encoding character-encoding

我有这段代码:

...
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不是字符串吗? 我该如何解决这个问题?

4 个答案:

答案 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转义&符号。 &amp;

答案 3 :(得分:0)

如果您无法更改服务器的XML输出(这不是您的应用程序或其他问题),那么“黑客”修复将是:

function htmlizeAmps(s){
  return s.replace(/\x26/g,"&amp;"); //globalreplace "&" (hex 26) with "&amp;"
}
document.getElementById('tempLabourLineDescription').value = htmlizeAmps(sDescription);