【发布时间】:2012-10-03 04:42:03
【问题描述】:
我试图将一段 xml 存储到 javascript 中的字符串变量中,而在 IE8 中它不断抛出错误。 FireFox 不会显示错误,但在 IE8 中它当然会显示。切换浏览器不是一种选择,所以我必须尝试解决这个问题。
该函数的目的是检查一个列表的项目是否存在于一个xml对象中。因此,如果有更好的方法来进行检查,我也对此持开放态度。我们从中提取的系统具有将 xml 转换为字符串的功能。底部是检索内容的输出。这是功能。
function commodityExists(newCommodityCode){
var comExists = new Boolean(0);
newCommodityCode = ">" + newCommodityCode + "<"
var strXML = 'tw.local.aribaHeader.commodities.toXMLString()'; //ERROR HERE
strXML = strXML.toString();
if(strXML.indexOf(newCommodityCode,0)>0){
comExists=true;
}
return comExists;
};
这是 strXML.toString() 的输出;但正如你所见,它本质上是 xml。
var strXML = ‘<variable type="NameValuePair[]">
<item type="NameValuePair">
<name type="String"><![CDATA[No Data Found]]></name>
<value type="String"><![CDATA[95990070]]></value>
</item>
</variable>’;
【问题讨论】:
-
另外,我不会将
new Boolean(0)用于false。if(new Boolean(0)) console.log('a');将记录“a”。换句话说,包裹false的Boolean对象是truthy。 -
此外,此代码还有其他令人担忧的问题。它几乎看起来像一个面试问题或家庭作业问题。 “下面的代码有多少问题?”无意冒犯,但正如其他人提到的那样,您指出 can't 会引发错误。
-
感谢大家的反馈。我们正在使用带有自定义 UI 的 IBM 的 Lombardi Websphere,因此我们从 bpms 服务器中提取 xml,因此在无法解释环境的情况下很难将这个问题翻译给每个人。例如,str 变量的实际代码是 ar strXML = '';因为它实际上是在插入一个服务器变量。其他一些东西,比如我在调试时使用的布尔变量,所以我完全同意。
-
对于 newCommodityCode 我在字符串中添加括号,这样我正在搜索一个完整的字符串......所以搜索 >12351236
-
现在我们正在取得进展。我的猜测是它与
toXMLString返回的字符串有关。乍一看,它看起来像是一个换行问题,因为您在strXML字符串中显示换行符,这在 JavaScript 中是不允许的(不以反斜杠结束每一行)。但是,它在 Firefox 上和在 IE 上一样不允许,所以如果是这种情况,它也不应该在 Firefox 上工作。您能否发布浏览器从服务器接收的原始 JavaScript 输出?
标签: javascript xml string