0

ページの div に ajax 呼び出しからのデータを追加しようとしています。以下は Webkit ブラウザーでは問題なく動作しますが、IE では失敗します -

$.ajax({
    type: 'POST',
    url: '/cart/add_to_cart',
    data: {'item_id': item_id},
    success: function(data) {
        $('#cart_summary').html(data);
    }
)};

私のhtmlは次のとおりです。

<div id="cart_summary">
    <a class='link_to_cart' href="/cart/">
        <span> CART &#40;5&#41; &pound;1054.75 </span>
        <img id="cart_icon" src="/static/images/cart_icon.tiff">
    </a>
</div>

jQuery.html()呼び出しをドロップして使用しようとしました

var cartSummary = document.getElementById('cart_summary');
cartSummary.innerHTML = data;

しかし、これも失敗します (IE デバッガーで cartSummary.innerHTML の結果を見ると、必要な html が表示されますが、ページには表示されません)。

jQueryのさまざまな組み合わせも試しましたが.remove() .text().append()役に立ちませんでした。

4

2 に答える 2

1

これは役立つかもしれません:

jQuery Ajax エラー処理関数

$(function() {
    $.ajaxSetup({
        error: function(jqXHR, exception) {
            if (jqXHR.status === 0) {
                alert('Not connect.\n Verify Network.');
            } else if (jqXHR.status == 404) {
                alert('Requested page not found. [404]');
            } else if (jqXHR.status == 500) {
                alert('Internal Server Error [500].');
            } else if (exception === 'parsererror') {
                alert('Requested JSON parse failed.');
            } else if (exception === 'timeout') {
                alert('Time out error.');
            } else if (exception === 'abort') {
                alert('Ajax request aborted.');
            } else {
                alert('Uncaught Error.\n' + jqXHR.responseText);
            }
        }
    });
});

追加した後、ajax 関数を呼び出すと、エラーの詳細が表示されます。

于 2012-12-03T14:35:15.820 に答える
0

OK、問題が見つかりました。閉じられていないタグをスローする危険なdjangoテンプレートタグを作成しました<a>。Internet Explorerは、これを(非常に)奇妙に処理し、DOMを大混乱させていました。

この結果、私には2つの<div id="cart_summary">要素がありました(IEのみ-理由はわかりませんでした)。ご想像のとおり、これはdocument.getElementById('cart_summary')との問題を引き起こしていまし$('#cart_summary')た。

解決策は、重複する要素IDを削除することでした。

(私の問題を調査するために時間を割いてくれたPalash Mondal、rcdmk、Explosion Pills、WebweaverD、Wireyに大いに感謝します)。

于 2012-12-05T10:23:53.803 に答える