0

javascript で xml の一部を文字列変数に格納しようとすると、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);

Boolean オブジェクトが本当に必要ですか? この関数は、後で何が起こるかに応じて、ブール オブジェクトまたはプリミティブを返す場合があります。検討:

      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(ハードコードされた) 値には存在しないため、このテストは常に false になります。

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

この関数は常に false を返します (元の関数は値が false の Boolean オブジェクトを返します)。

于 2012-10-03T04:53:12.943 に答える
0

xmlを動的に入力しているため、文字をエスケープする方法がないため、私が採用しようとしていたアプローチは機能しません(おそらく何らかの形でありますが、明らかに価値がありません)。 HTMLまたはXMLコードをjavascript変数に保存する

代わりに、xmlを取得してクライアント側で比較し、誰かがより良い推奨事項を持っていない限り、ajaxを介して結果をポストバックする代わりに、比較をサーバー側に移動しています。

于 2012-10-03T06:22:21.343 に答える
0

文字列を作成しています:

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

次に、その文字列を...文字列に変換しますか?

strXML = strXML.toString();

twあなたが使おうとしているように見えるこのオブジェクトはどこで定義されますか?twコードが今書かれているので、このオブジェクトの何かに対して.toXMLString()メソッドを呼び出していないからです。オブジェクト呼び出しのリテラルテキストを文字列自体として割り当てるだけです。

于 2012-10-03T04:44:37.200 に答える