0

次の形式のxmlファイルがあります。

<cart>
<itemCount>1</itemCount>
<cartTotal>33.94</cartTotal>
</cart>

これは、eコマースショッピングカートの内容を追跡するためのものです。したがって、常に1つの「カート」ノードしかありません。

「cartTotal」フィールドを読みたいです。0より大きい場合は、Webサイトに[カートを表示]ボタンを表示したいと思います。

次のことを試しましたが、機能しません。

$(document).ready(function(){
    $.ajax({
        type: "GET",
        url: "https://www.example.com/file.xml",
        dataType: "xml",
        success: function(xml) {
            $(xml).find('cart').each(function(){
                if (($(this).attr('cartTotal')) > 0) {
                    $("a.view-cart-button").css('visibility', 'visible');
                }
            });
        }
    });
});
4

1 に答える 1

1

その中の要素は属性<cart>...</cart>ではなく、子ノードです。

交換:

if (($(this).attr('cartTotal')) > 0) {
    $("a.view-cart-button").css('visibility', 'visible');
}

と:

if ( $('cartTotal',$(this)).text()*1 > 0) {
    $("a.view-cart-button").css('visibility', 'visible');
}

修正

別のドメインで AJAX を使用して XML ファイルを呼び出し、CORSアクセスが設定されていない場合、これは失敗するという警告があります。次のことを試してください。

$(document).ready(function(){

    $.ajax({
        type: "GET" ,
        url: "https://secure.ultracart.com/cgi-bin/UCJavaScript?merchantid=DEMO&type=xml" ,
        dataType: "xml" ,
        success: function(xml) {
            if( $(xml).find('cartTotal').text()*1 > 0 ){
                $("a.view-cart-button").css('visibility', 'visible');
            }
        }
    });

});​

支払いゲートウェイなどを扱っている場合は、最初にそれらのドキュメントを参照してください。独自のサイトからそれらと対話する方法が指定されています.

于 2012-11-15T02:32:38.980 に答える