2014-04-06 151 views
13

我正在使用Ajax帖子將表單數據提交給服務器,進行驗證,然後根據數據是否有效並可以存儲來返回消息。我的ajax文章中的成功函數並不運行。這裏是阿賈克斯帖子和成功消息的顯示:Ajax成功功能

jQuery.ajax({   
    type:"post", 
    dataType:"json", 
    url: myAjax.ajaxurl, 
    data: {action: 'submit_data', info: info}, 
    success: function(data) { 
     successmessage = 'Data was succesfully captured'; 
    } 
}); 

$("label#successmessage").text(successmessage); 
$(":input").val(''); 
return false; 

雖然沒有消息顯示在標籤上。我嘗試將代碼中的成功消息變量設置爲一個設置值,並且它顯示正常,所以我的成功函數一定有問題,我只是看不到什麼?我也嘗試設置錯誤回調像這樣:

error: function(data) {    
    successmessage = 'Error'; 
}, 

但仍然沒有消息顯示。

+1

可能重複[如何返回從AJAX調用的響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-電話) – Quentin

+0

「我的成功功能在我的ajax後沒有運行雖然」所以請檢查您的網絡選項卡的錯誤 –

+0

檢查網絡選項卡,它表示郵政跑了OK – Mikey

回答

18

這是因爲Ajax是異步的,當服務器回答客戶端時,successerror函數將稍後調用。所以,只要將根據結果零件到您的成功之類的函數是:

jQuery.ajax({ 

      type:"post", 
      dataType:"json", 
      url: myAjax.ajaxurl, 
      data: {action: 'submit_data', info: info}, 
      success: function(data) { 
       successmessage = 'Data was succesfully captured'; 
       $("label#successmessage").text(successmessage); 
      }, 
      error: function(data) { 
       successmessage = 'Error'; 
       $("label#successmessage").text(successmessage); 
      }, 
     }); 

     $(":input").val(''); 
     return false; 
0

上面給出解決不了我的problem.So我改變異步到假以獲取警報消息的答案。

jQuery.ajax({ 
      type:"post", 
      dataType:"json", 
      async: false, 
      url: myAjax.ajaxurl, 
      data: {action: 'submit_data', info: info}, 
      success: function(data) { 
       alert("Data was succesfully captured"); 
      }, 
     });