Jquery Null不是AJAX和检索部分页面的对象 真的需要一些人帮忙才能弄明白!

Jquery Null不是AJAX和检索部分页面的对象 真的需要一些人帮忙才能弄明白!,jquery,ajax,Jquery,Ajax,我试图使用jQuery检索HTML的一部分,但出现错误: Null不是上的对象 此行导致错误: $("#collection").html(jQuery(html).find('#collection').html()); functionupdate\u产品(ajax\u页面){ $.ajax({ 键入:“获取”, url:ajax_页面, 数据:{}, 成功:函数(html){ $(“#collection”).html(jQuery(html).find(“#collection”).h

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

Null不是上的对象

此行导致错误:

$("#collection").html(jQuery(html).find('#collection').html());
functionupdate\u产品(ajax\u页面){
$.ajax({
键入:“获取”,
url:ajax_页面,
数据:{},
成功:函数(html){
$(“#collection”).html(jQuery(html).find(“#collection”).html());
历史,国家({
页面:ajax\u页面
},“”,ajax_页);
}
}); 
}
检索整个页面时,它会起作用:

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);'


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

在上一个项目中,我做了如下类似的工作:

$("#collection").load(ajax_page+" #collection", ajax=true, function(){
    history.pushState({
        page: ajax_page
        }, "", ajax_page); 
});
当然,我的项目没有相同的ID,我的url也不在变量中,它是常量,所以我只是将其写入


我在返回的数据中对我的项目做了进一步的工作,但是我把它放在一个隐藏的DIV中,所以在我操作它之前,它实际上是页面的一部分。这对你不起作用,因为ID会在页面上出现两次。也许没有它也可以,但我并不是为了找到答案而奋斗。现在,我将进入
#collection
div的处理工作卸载到一个单独的脚本中,当您希望刷新它时,使用ajax将更容易。

如果您执行
console.log(jQuery(html).find('#collection').length)
您看到了什么?引用错误:找不到变量:htmlIn在这种情况下,您确定已在
success
处理程序的参数中定义了
html
?如何检查?我是Jquery和Javascript/ajaxi的初学者如果我理解你的问题,我想我一定已经理解了,因为其他函数也可以工作。正确的?还是我错了?我知道我正确地通过了ajax_页面。很抱歉,我没有发现这一点!如果我输入console.log($(“#collection”).html(),它将返回作为console.log(jQuery(html))输出的HTMLW;ReferenceError:找不到变量:htmlThis似乎有效,是否有一种方法可以同时更新多个div,这样我就不需要调用它两次或三次?这就是我在页面上所做的,我将整个内容加载到一个隐藏的div中,但是,如果ID要在页面上多次出现,则必须执行一些不同的操作。如果不能在单个元素中包含所有“动态”内容,则必须执行多个调用。ID相同是必须的。我要更新的多个div是不同的ID。例如,#收集和#过滤器。或者您是指原始页面的id,与新ajax页面的id匹配?是的,id来自原始页面,id来自ajax页面匹配。我的方法是将返回的数据存储在页面上,但不能在一个页面上可靠地拥有两个相同ID的数据。您可能会在收到ID时更改它们,但就个人而言,我宁愿有许多较小的请求,而不是一个较大的请求。它们同时工作,并根据自己的计划更新页面,而不是一次更新所有页面。我可以看出,对于某些应用程序来说,这可能并不理想,尤其是当一个或多个请求比其他请求花费的时间明显更长时。
$("#collection").load(ajax_page+" #collection", ajax=true, function(){
    history.pushState({
        page: ajax_page
        }, "", ajax_page); 
});