0

我试图将一段 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 = ‘&lt;variable type="NameValuePair[]">
                      <item type="NameValuePair">
                      <name type="String"><![CDATA[No Data Found]]></name>
                      <value type="String"><![CDATA[95990070]]></value>
                      </item>
                      </variable>’;
4

3 回答 3

3

我不知道你认为代码在做什么,这里解释一下它的作用:

> 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){            

该测试将始终为假,因为nweCommodityCode的值在函数中是硬编码的,并且不存在于strXML的(硬编码)值中。

>         comExists = true;            
>     }
>     return comExists; };

该函数将始终返回 false(尽管原始函数将返回值为 false 的布尔对象)。

于 2012-10-03T04:53:12.943 回答
0

您正在创建一个字符串:

var strXML = 'tw.local.aribaHeader.commodities.toXMLString()';  //ERROR HERE
             ^---                                           ^---

然后将该字符串转换为...字符串?

strXML = strXML.toString();

tw您似乎试图使用的这个对象将在哪里定义?因为现在编写代码时,您没有在此tw对象中调用 .toXMLString() 方法。您只是将对象调用的文字文本分配为字符串本身。

于 2012-10-03T04:44:37.200 回答
0

我尝试采用的方法不起作用,因为我正在动态填充 xml,因此我无法逃避字符(可能有某种方式,但显然不值得)。 在 javascript 变量中存储 HTML 或 XML 代码

相反,我将比较移动到服务器端,而不是检索 xml 并在客户端进行比较并通过 ajax 发回结果,除非有人有更好的推荐。

于 2012-10-03T06:22:21.343 回答