1

努力让我了解 AJAX 的成功范围。

我正在尝试从 AJAX 调用加载一些数据,然后使用 jQuery 将其附加到已经存在的ul

这个例子帮助了我,但我不知道如何从“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 
4

2 回答 2

1

您正在将数据推送到items

items.push('<li class="product"><a href= ......

这表明这items实际上是一个数组?

然后你做:

var nextLoad = items;  

也有效地变成nextLoad一个数组。

现在,当您尝试这样做时:

$('li.loading').before(nextLoad);

您试图在li具有该类的元素之前插入一个数组.loading,并且由于 DOM 并不真正支持将数组插入其中,因此您会收到错误消息。

于 2012-10-02T11:22:41.030 回答
0
var that = $(this);

试试这个jquery

于 2012-10-02T10:39:35.927 回答