2014-10-27 61 views
0

這裏是我的代碼:定時器的onClick的JavaScript

this.ItemId = function (ItemId) { 
     var itemParameters = ItemId; 

     //put a timer 
     setTimeout(function() { 
      $.ajax({ 
       type: "POST", 
       url: '/Menu/ChangeItemId', 
       dataType: 'json', 
       data: JSON.stringify(itemParameters), 
       contentType: "application/json; charset=utf-8", 
       success: self.ChangeItemIdSuccess, 
       error: errorFunc 
      }, 5000); 
     }); 
    }; 

POST請求是,一旦項目Id已經完成了數據發佈到服務器之前,執行,完成,我想(5秒)延遲它如果用戶再次單擊該按鈕,則更改該過程中的ItemId。

+4

你將'5000'作爲參數傳遞給'$ .ajax()'而不是'setTimeout()'。 – 2014-10-27 14:35:40

回答

2

看起來像一個錯字對我說:

的setTimeout的原型:setTimeout(function,milliseconds,lang)

添加 5000 PARAM到AJAX方法和的setTimeout方法。

以下是有效的代碼:

this.ItemId = function (ItemId) { 
     var itemParameters = ItemId; 

     //put a timer 
     setTimeout(function() { 
      $.ajax({ 
       type: "POST", 
       url: '/Menu/ChangeItemId', 
       dataType: 'json', 
       data: JSON.stringify(itemParameters), 
       contentType: "application/json; charset=utf-8", 
       success: self.ChangeItemIdSuccess, 
       error: errorFunc 
      }); 
     }, 5000); 
    }; 

Here'ssetTimeout一個簡單的例子。

+1

解釋錯字? OP現在必須對兩個代碼進行比較,以瞭解您所做的改變。 – 2014-10-27 14:41:04

+0

我等着聽到提問者回到這是否只是在他的問題上的錯誤,但錯別字是一個接近的選票原因。 – 2014-10-27 14:43:32

+1

好得多,+1 – 2014-10-27 14:43:34

0

我沒有得到什麼你到底想做的事,但如果你想,如果按鈕用戶點擊,請求將被稱爲第二次點擊,而不是第一次點擊後5000毫秒爲單位。你應該試試這個: -

this.ItemId = function (ItemId) { 
    var itemParameters = ItemId, me = this; 
    //put a timer 
    me.doneTypingInterval = 5000; 
    // Call every time 
    me.delayExecute = function() { 
     clearTimeout(me.typingTimer); 
     me.typingTimer = setTimeout(me.request, me.doneTypingInterval); 
     return true; 
    }; 
    // do ajax 
    me.request = function() { 
     $.ajax({ 
      type: "POST", 
      url: '/Menu/ChangeItemId', 
      dataType: 'json', 
      data: JSON.stringify(itemParameters), 
      contentType: "application/json; charset=utf-8", 
      success: self.ChangeItemIdSuccess, 
      error: errorFunc 
     }); 
    }; 

};