Null不是使用AJAX并正在检索部分页面的对象

时间:2018-09-17 12:27:09

标签: jquery ajax

真的可以使用一些帮助找出答案!

我正在尝试使用jQuery检索HTML的一部分,但出现错误:

  

空不是

上的对象

此行导致错误:

$("#collection").html(jQuery(html).find('#collection').html());
function update_products(ajax_page) {  
  $.ajax({
    type: "GET",
    url: ajax_page,
    data: {},
    success: function(html) { 
      $("#collection").html(jQuery(html).find('#collection').html());  
      history.pushState({
        page: ajax_page
      }, "", ajax_page);                  
    }
  }); 
}

检索整个页面时可以正常工作:

function update_products(ajax_page) {  
  $.ajax({
    type: "GET",
    url: ajax_page,
    data: {},
    success: function(html) { 
      $("#collection").html(html);  
      history.pushState({
        page: ajax_page
      }, "", ajax_page);                  
    }
  }); 
}

我认为这与jQuery(html).find('#collection').html()有关,但我不知道我要去哪里。

另一个版本出错:

  

Null不是对象   在这条线上   var $ response = $(html);'

function update_products(ajax_page) {  
$.ajax({
url: ajax_page,
dateType: 'html',
success: function(html){ 
      //Create jQuery object from the response HTML.
    var $response=$(html);

    //Query the jQuery object for the values
    var collection = $response.filter('#collection').text();

  $("#collection").html(collection);  
     history.pushState({
     page: ajax_page
     }, "", ajax_page);                  
}


}); 

2 个答案:

答案 0 :(得分:1)

您需要将'html'定义为成功处理程序的参数。

答案 1 :(得分:1)

在上一个项目中,我完成了与以下类似的操作:

$("#collection").load(ajax_page+" #collection", ajax=true, function(){
    history.pushState({
        page: ajax_page
        }, "", ajax_page); 
});

当然,我的项目没有相同的ID,而且我的网址也不在变量中,它是常量,所以我只写了它。

我在返回的数据中对项目做进一步的工作,但是我将其放入了一个隐藏的DIV中,因此在操作它之前它实际上是页面的一部分。这对您不起作用,因为该ID将在页面上出现两次。不这样做可能是可行的,但是我并没有努力找出答案。这些天来,我将#collection div中的处理工作转移到了一个单独的脚本中,这在您希望刷新Ajax时更加容易。