2013-12-20 97 views
0

我正在使用WordPress插件。有很多jQuery Ajax調用,除了一個調用外,它們都成功了。這恰好是在onbeforeunload,我希望是沒有問題的,但這裏的代碼:WordPress jQuery Ajax調用失敗,無響應

jQuery(window).on('beforeunload', function() { 
    var invoiceData = { 
     action: 'update_invoice_data', 
     invoice_mode: jQuery('#invoice_mode').val() 
    }; 
    jQuery.ajax({ 
     type:"post", 
     url:ajaxurl, 
     data:invoiceData, 
     error:function(request, textstatus, errorThrown) { 
      console.log('invoice data pass failed'); 
      console.log(request); 
      console.log(textstatus); 
      console.log(errorThrown); 
     }, 
     success:function(result, status, xhr) { 
      console.log('invoice data passed'); 
     }, 
    }); 
}); 

(有沒有在invoiceData變量傳遞更多的數據,但即使當我刪除一切,但action='update_invoice_data'仍失敗)。

textstatus只是「錯誤」而errorThrown是一個空字符串。在其他地方的頭文件中,我有:

add_action('wp_ajax_update_invoice_data', 'update_invoice_data'); 

然後函數update_invoice_data在別處。還有其他add_action行在同一頭文件中的其他功能工作正常,並發現在同一個文件update_invoice_data其他功能完美的工作。

所以我的問題是:

  1. 它是不合法的做在onunload的函數調用Ajax?如果是這樣,有沒有辦法解決這個問題?

  2. 如果它是合法的,我做錯了什麼?

回答

0

這恰好是在onbeforeunload,我希望是沒有問題的

這正是問題。請求在完成之前正在中止。使其同步解決此問題。

async: false 
+0

工作完美!我知道這很簡單! :) –