2014-11-14 73 views
0

我有一個PHP應用程序到Excel文件上傳到server.I使用AJAX將數據發送到server.But有時Ajax調用工作repeatedly.I在點擊按鈕稱爲AJAX功能AJAX調用發射多次

$(document).on("click", "#btnContinue", function() { 
    $.ajax({ 
     url: "ExcelColDesptn.php", 
     data: data,       
     type: 'post', 
     success: function(response) {} 
    }); 

HTML:

<button id="btnContinue" name="btnContinue" class="btn btn-primary ">Continue </button> 

我用螢火蟲來修復它,它顯示enter image description here

我不知道爲什麼會發生。這裏'ExcelColDesptn.php'被調用3次,'SaveExcelToServer.php'被調用4次。有時它只能運行一次。任何幫助?

+2

你也可以發佈你的HTML。是否有任何其他事件引發該按鈕上的點擊事件? –

+0

你可以顯示'btnContinue'的HTML嗎? –

+0

@RoryMcCrossan也許它是一個綁定或訂閱,你可以正確=) –

回答

2

你有這個功能,這個綁定在另一個函數中嗎?哪個被稱爲多次?因爲這是一個LIVE綁定,這意味着,即使內容被更新,綁定也會存在。

因此,我希望以下內容:

  • 您可以使用Ajax更新內容
  • #btnContinue是一個HTML元素是通過Ajax的更新裏面?
  • 你調用該函數添加一個新的綁定按鈕
  • 按鈕獲得一個額外的點擊結合
  • 因此多次更新您的阿賈克斯,在多次上載被執行。因爲你綁定點擊的方式。

解決方案:

  1. 使它成爲一個正常的結合$("#btnContinue").on("click", fn)
  2. 之前,你的新的結合把你唯一有約束力的文件準備好,而不是在一個被稱爲函數多次
  3. 使用$("#btnContinue").off("click") (這是最難看的解決方案)
+0

ExcelColDesptn.php被ajax.lp淹沒,但它的一次 – Sherin

2
please use your code like this 

$('#btnContinue').Click(function() { 
    $.ajax({ 
     url: "ExcelColDesptn.php", 
     data: data,       
     type: 'post', 
     success: function(response) {} 
    }); 
}); 
+0

這在Opera瀏覽器中並不適用於我。當我選擇選項並按回車鍵時,什麼都沒有發生。對於Firefox和鉻它的作品。 –

+0

當您點擊enter時,您在opera瀏覽器中點擊了事件工作嗎? –

+0

這是Opera瀏覽器版本問題。更新Opera瀏覽器後,它工作正常。 –