2017-09-20 113 views
0

我有一個按鈕點擊AJAX調用。當我第一次點擊按鈕時,表單正在提交。如果出現錯誤,我將顯示一條錯誤消息。AJAX沒有調用第二次點擊按鈕使用jQuery點擊事件

但是,當我再次點擊按鈕時,AJAX沒有被第二次調用。 如果我嘗試一條警報消息而不是AJAX調用,它工作正常。 如何在按鈕單擊時第二次發出AJAX請求?

這裏是我的代碼:

 <script type="text/javascript"> 

     $(document).ready(function() { 


      $("#del").on('click',function() 
      { 
      $.ajax({ 
       type: 'DELETE', 
       url: window.location.href, 
       success: function(data) { 
        var error = data.error; 
        var success = data.success; 
        if(error.length>0) 
        { 
         $("#errmsg").attr('class', 'alert alert-danger alert-dismissible'); 
         $('#str').text(error); 
         $('#errmsg').show(); 
        } 
        else 
        { 
        $("#errmsg").attr('class', 'alert alert-success alert-dismissible'); 
        $('#str').text(success); 
        $('#errmsg').show(); 
         setTimeout(function(){ 
         window.location.href= "/users"; 
         }, 2000); 
        } 
       }, 
       error: function(XMLHttpRequest, textStatus, errorThrown) 
       { 
        alert(textStatus+errorThrown); 
       } 
      }); 

      }); 



     }); 

     </script> 
+0

'type:'DELETE','? 'POST或GET'? – guradio

+1

@guradio,'鍵入:'DELETE'是有效的 – Satpal

+0

我看到謝謝澄清@Satpal – guradio

回答

0

關鍵在於你的腳本的成功處理程序。如果沒有錯誤發生,您將在2秒後將頁面位置(即重定向)更改爲您的/ users URL。

我還假設這個將事件附加到按鈕的特定腳本未包含在/ users頁面中,這會導致事件處理程序在單擊按鈕時不再被觸發。

因此,我建議您將這段代碼放在一個腳本文件中,並在兩個正在加載的頁面中引用它。

0

我對此有幾點想法。

你有#del按鈕總是在DOM中嗎?或者你刪除它,然後將它附加到每個Ajax調用你的DOM上?

如果是,那麼綁定將不起作用,因爲您剛剛創建了一個新的#del按鈕。

因此,不是,嘗試,

<div id="del" onclick="del_me()">Delete</div> 

<script> 
del_me = function(){ 
//---- YOUR AJAX CALL HERE 
} 
</script> 

或者,如果你不希望這樣,你就必須綁定點擊創建按鈕股利每一次。

相關問題