2013-12-20 2 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. Разве это не законно, чтобы сделать вызов Ajax в функцию OnUnload? Если да, есть ли способ обойти это?

  2. Если это законно, что я делаю неправильно?

ответ

0

Это случается в onbeforeunload, который я надеюсь, что это не проблема

Это именно проблема. Запрос прекращается до его завершения. Сделайте это синхронно, чтобы решить эту проблему.

async: false 
+0

Работал отлично! Я знал, что это просто! :) –

Смежные вопросы