使用jQuery ajax response html更新div

the*_*eld 37 ajax jquery get asp-classic replacewith

我正在尝试使用ajax html响应中的内容更新div.我相信我的语法正确,但div内容被替换为整个HTML页面响应,而不仅仅是在html响应中选择的div.我究竟做错了什么?

    <script>
        $('#submitform').click(function() {
            $.ajax({
            url: "getinfo.asp",
            data: {
                txtsearch: $('#appendedInputButton').val()
            },
            type: "GET",
            dataType : "html",
            success: function( data ) {
                $('#showresults').replaceWith($('#showresults').html(data));
            },
            error: function( xhr, status ) {
            alert( "Sorry, there was a problem!" );
            },
            complete: function( xhr, status ) {
                //$('#showresults').slideDown('slow')
            }
            });
        });
    </script>
Run Code Online (Sandbox Code Playgroud)

ade*_*neo 70

你正在设置#showresults什么data是html ,然后用它自己替换它,这没有多大意义?
我猜测你在#showresults返回的数据中找到了什么,然后#showresults使用来自ajax调用的html 更新DOM中的元素:

$('#submitform').click(function () {
    $.ajax({
        url: "getinfo.asp",
        data: {
            txtsearch: $('#appendedInputButton').val()
        },
        type: "GET",
        dataType: "html",
        success: function (data) {
            var result = $('<div />').append(data).find('#showresults').html();
            $('#showresults').html(result);
        },
        error: function (xhr, status) {
            alert("Sorry, there was a problem!");
        },
        complete: function (xhr, status) {
            //$('#showresults').slideDown('slow')
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

  • `$('<div />')`在内存中创建一个新的空元素,然后将数据附加到该元素,数据中的所有内容现在都是空元素中的子元素,而`find()`只搜索子元素,所以这就是为什么这样做的原因.另一个选择是使用`filter()`,但只能找到根元素,所以你通常必须根据hte HTML来决定`find()`或`filter()`,因为我没有真的知道HTML的样子,我使用"无处不在"的解决方案,附加到一个空元素并使用`find()`. (5认同)
  • `find()`只查找子项,而不是`data`的根中的元素,所以将`data`附加到一个空的`div`确保`data`中的所有元素实际上都是子元素,并且`find( )`将始终有效(只要元素存在于数据中). (3认同)
  • 你好,如果可能的话你能解释一下 $('&lt;div /&gt;').append(data) 在这段代码中做了什么吗? (2认同)

Lem*_*eur 9

差不多5年后,我想我的回答可以减少很多人的辛勤工作。

更新一个 可以通过这种方式使用来自 ajax 调用的 HTMLDOM 中元素

$('#submitform').click(function() {
     $.ajax({
     url: "getinfo.asp",
     data: {
         txtsearch: $('#appendedInputButton').val()
     },
     type: "GET",
     dataType : "html",
     success: function (data){
         $('#showresults').html($('#showresults',data).html());
         // similar to $(data).find('#showresults')
     },
});
Run Code Online (Sandbox Code Playgroud)

或与 replaceWith()

// codes

success: function (data){
   $('#showresults').replaceWith($('#showresults',data));
},
Run Code Online (Sandbox Code Playgroud)