我正在尝试使用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);
}
});
答案 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时更加容易。