1

AJAXの成功の範囲に頭を悩ませるのに苦労しています。

AJAX呼び出しからいくつかのデータをロードし、jQueryを使用して既存のデータにアタッチしようとしていますul

このは私を助けましたが、「this」から特定の要素を参照する方法を理解することはできません。

だから私はthissuccess関数をとして渡しました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 に答える