2016-04-07 212 views
0

我使用AJAX調用從數據庫中提取文件名,然後用它來填充具有相同名稱的圖像的傳送帶。同一變量的多個實例

我的網頁應用程序利用了標籤,當點擊時,重新加載AJAX並從數據庫中提取一組不同的文件名,然後重新填充傳送帶。

我發現的是當網絡應用程序最初加載時,轉盤工作正常,但如果我點擊任何選項卡,轉盤開始無法正常工作,即第一次點擊然後使用轉盤旋轉木馬按時移動兩個圖像,第二次敲擊,圖像一次移動三個,如此等等。

如果我檢查控制檯,我可以看到在調用後,當我點擊旋轉木馬中的左或右箭頭,就好像有兩個同一變量的實例,或者好像兩個AJAX調用都被調用某種程度上來說。附圖顯示我的意思。

Console log

正如你可以看到,下面的初始加載一切都很好,但是一旦任何後續調用是由它彷彿從一個呼叫的繼續計數,和輔助數也開始與新的數據關聯,或三分之一或四分之一或五分之一,取決於已撥打多少電話。

$('.tabs-nav li').on('click', function() { 
    tabName = $(this).html(); 
    place = 0; 
    products = getProductDetails(selected); //AJAX call 
    data = dealWithData(products, place); //Deferred object that works data 
}); 
+0

當你面臨的問題的描述是相當出色,你也應該提供一些代碼,或甚至更好的一個最小的例子,以便我們可以更好地理解正在發生的事情而不是猜測 – juvian

+0

@juvian我已經添加了我的'click'處理程序。 – Ryan

+0

看起來您正在同步處理異步調用,但很難從缺乏代碼的角度來看。 – epascarello

回答

0

聽起來像你有一個範圍界定問題。最簡單的方法是將你的邏輯放在一個閉包中,這樣你的變量就可以被限制到特定的選項卡。因此,而不是像這樣:

var place,count 
$(".tabs").on('click',function(){/*shares same place & count */}); 

它應該是這樣的:

$(".tabs").each(function(){ 
    var place,count 
    $(this).on('click',function(){/*each has their own place,count*/}); 
}); 
+0

我認爲你是對的。我已經添加了我的'click'處理程序代碼。假設這是問題所在? – Ryan

+0

我這麼認爲,因爲在您每次點擊時提供的代碼中,地點設置爲0 –