努力让我了解AJAX的成功范围。
我正在尝试从AJAX调用加载一些数据,然后使用jQuery将其附加到已存在的ul
这example帮助了我,但我无法弄清楚如何引用'this'中的特定元素。
所以我已将this
作为that
传递给成功函数,但是这一行:
$('li.loading').before(nextLoad);
失败:
Uncaught Error: NOT_FOUND_ERR: DOM Exception 8
我假设,我需要使用that
跟随我的元素,但无法解决语法问题。
var that = this;
$.ajax({
type: 'GET',
url: url,
async: true,
jsonpCallback: 'callback',
contentType: "application/json",
dataType: 'jsonp',
success: function(data)
{
$.each(data.products, function(key, val)
{
items.push('<li class="product"><a href="product.html"><span class="store-badge"></span><img src="'+val.image+'" width="124" height="166" /><h3>'+val.title+'</h3></a></li>');
});
var nextLoad = items;
if (loadNumber <= 4) {
$('li.loading').before(nextLoad);
};
if (loadNumber >= 4) {
$('li.loading').hide();
};
$('.scroll-horizontal').mCustomScrollbar("update");
},
error: function() {
console.log('failed');
}
});
编辑:
导致以下内容的控制台日志记录:
Window
Infinity: Infinity
$: function (a,b){return new e.fn.init(a,b,h)}
Array: function Array() { [native code] }
ArrayBuffer: function ArrayBuffer() { [native code] }
Attr: function Attr() { [native code] }
Audio: [object Function]
AudioProcessingEvent: function AudioProcessingEvent() { [native code] }
BeforeLoadEvent: function BeforeLoadEvent() { [native code] }
Blob: function Blob() { [native code] }
Boolean: function Boolean() { [native code] }
//CONTIUNES
控制台记录nextload也会导致
Uncaught Error: NOT_FOUND_ERR: DOM Exception 8
答案 0 :(得分:1)
您正在将数据推送到items
:
items.push('<li class="product"><a href= ......
这表明items
实际上是一个数组?
然后你做:
var nextLoad = items;
将nextLoad
有效地转换为数组。
现在,当你想要做的时候:
$('li.loading').before(nextLoad);
您正在尝试在具有li
类的.loading
元素之前插入数组,并且由于DOM确实不支持将数组插入其中,因此会出现错误。
答案 1 :(得分:0)
var that = $(this);
试试这个jquery