2012-09-21 101 views
1

我有一個在我的網頁,我想提出的,我使用Ajax調用:Ajax調用的onclick只發生一次

$(document).ready(function() { 
    $("#password_change").click(function() {      
     $.ajax({ 
      type: 'POST', 
      url: 'set_password.php', 
      data: 'password=' + $('#password').val(), 
      success: function(data) { 
       var obj = JSON.parse(data);    
       if(obj.success == '1') {  
        $('#message').show();        
       }else{ 
        $('#fail_message').show();        
       } 
      } 
     }); 
    }); 
}); 

我的形式:

<form id="password_form" name="password_form" action="" method="POST" style=""> 
    <input type="password" class="required" id="password" value="" /> 
</form> 

第一次我點擊提交按鈕,我得到正確的信息,一切似乎都很好。然後我再次點擊submit按鈕,但是通過ajax調用發送的數據是空的,所以我得到了ajax調用的錯誤回覆。

有沒有人有一個想法,爲什麼會發生這種情況?

在此先感謝

+1

您是否在使用例如網絡流量檢測網絡流量? Chrome中的開發控制檯? ajax請求是否與空數據有效載荷一起發送?在jsfiddle中只使用你的代碼就可以正常工作(請求可以用密碼數據多次發送),所以它應該是別的東西 - 也許你的PHP或者你的頁面上的其他JavaScript。 –

+1

您可以在ajax調用之前檢查$('#password')。val()值。 –

+1

我建議您刪除整個'$ .ajax'調用,並在click事件中僅做一個'alert($('#password')。val())',以確保它不在客戶端中JavaScript代碼。如果警報不會觸發多次,那麼您至少知道這是一個JavaScript問題。 –

回答

0

我覺得當按鈕單擊時,它也發佈支持。 onclick後使用event.preventDefault()停止觸發器回發。請嘗試修改代碼:

... 
$("#password_change").click(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
    ... 
    ... 
    }); 
}); 
... 
+0

不,也不行。 – novellino

+0

檢查我的更新。我添加了e參數在.click(function(e){...之前錯過。 – Habibillah

+0

當您點擊提交按鈕時,您的頁面是否被重新加載(是否「閃爍」?)密碼字段在第一次點擊還是仍在那裏的charaacters? –