我试图将一段xml存储到javascript中的字符串变量中,并且在IE8中它不断抛出错误。 FireFox没有显示错误,当然在IE8中也是如此。 Swictching浏览器不是一个选项,所以我必须尝试解决这个问题。
该函数的目的是检查列表中的项是否存在于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>’;
答案 0 :(得分:2)
我不知道你认为代码在做什么,这里是对它的作用的解释:
> function commodityExists(newCommodityCode){
> var comExists = new Boolean(0);
你真的想要一个布尔对象吗?此函数可能会返回布尔对象或原语,具体取决于稍后发生的情况。考虑:
var comExists = false;
> newCommodityCode = ">" + newCommodityCode + "<"
覆盖从调用传递给 newCommodityCode 的任何值。
> var strXML = 'tw.local.aribaHeader.commodities.toXMLString()'; //ERROR HERE
我看不出它是如何引发错误的,它是一个简单的字符串赋值。
> strXML = strXML.toString();
有效地什么也没做 - 它调用字符串的 toString 方法,它只返回相同的字符串。
> if(strXML.indexOf(newCommodityCode,0)>0){
该测试将始终为false,因为 nweCommodityCode 的值在函数中是硬编码的,并且不存在于 strXML 的(硬编码)值中。 / p>
> comExists = true;
> }
> return comExists; };
该函数将始终返回false(尽管原始函数将返回值为false的布尔对象)。
答案 1 :(得分:0)
您正在创建一个字符串:
var strXML = 'tw.local.aribaHeader.commodities.toXMLString()'; //ERROR HERE
^--- ^---
然后将该字符串转换为...字符串?
strXML = strXML.toString();
这个tw
对象在哪里被定义为您似乎试图使用?因为现在编写代码时,您不会在此tw
对象中的某些内容上调用.toXMLString()方法。您只是将对象调用的文字文本指定为字符串本身。
答案 2 :(得分:0)
我试图采取的方法不起作用,因为我动态填充xml,所以我无法逃脱角色(好吧可能有某种方式,但显然它不值得)。 Storing HTML or XML code in javascript variables
相反,我将比较转移到服务器端,而不是检索xml并在客户端进行比较,并通过ajax回发结果,除非有人有更好的推荐。