1

htmlマークアップを返すAjax関数があります。文字列全体から特定のdivを抽出し、現在のhtmlで同じdivを置き換える必要があります。これはコードの一部です:

$.ajax({
        type: "POST",
        url: postUrl,
        dataType: "HTML",
        data: "ddd"
        success: function(htmlResponse) {
                //replace the html code
                $('#somediv').html($('#somediv' htmlResponse).html());
            }
        },

IE 8ではなく、ChromeとFFで正常に動作します。IEはhtmlResponseでdivを検出しません。私は警告しようとしました:

alert($(htmlResponse).find('#somediv').html());

空白のメッセージが表示されました。これはIEのバグですか、私のコードに何か問題がありますか?ありがとう8

4

2 に答える 2

1

については、最初に取得した html() が大きすぎる/空白が多すぎる/空でない限り、alertIEが壊れる理由がわかりません。alert($(htmlResponse).find('#somediv').html());

ただし、この行では:

$('#somediv').html($('somediv' htmlResponse).html());

もしかして:

$('#somediv').html($('#somediv', htmlResponse).html());

?

編集:

で HTML を分析し、htmlResponse整形式であることを確認することをお勧めします。閉じないか<div>、IE8 で問題が発生しているその他の無効な構文が原因である可能性があります。

于 2012-12-12T10:43:46.427 に答える
1

postUrl に「 #divID」を追加すると、探している div のみが返されます。例えば

var postUrl = "/something/target.htm #theDiv";
$.ajax({
    type: "POST",
    url: postUrl,
    dataType: "HTML",
    data: "ddd"
    success: function(htmlResponse) {
            //replace the html code
            $('#somediv').html($('somediv' htmlResponse).html());
        }
    },

これが $.ajax または $.get で機能するかどうかは頭の中で思い出すことはできませんが、$('#somediv').load() で機能するという事実は知っています。 、より短い、アプローチ:

$('#somediv').load("/something/target.htm #theDiv");

#divID が最後にある限り、明らかにクエリ文字列を URL に挿入できます。

于 2012-12-12T10:34:46.900 に答える