2016-07-22 4 views
0

Я использовал $ (window) .bind ("beforeunload", function (e) {}), чтобы вызвать ajax до закрытия браузера. Он работает нормально, когда я тестирую свой локальный хост. Ajax-вызов выполняется отлично для обновления страницы и закрытия браузера. Но, когда я загружаю это на онлайн-сервер, кажется, он работает только для обновления страницы, ничего не делает для закрытия браузера, хотя для вызова мне нужен ajax для браузера. вот мой код:Ajax вызов до закрытия или перенаправления страницы с использованием beforeunload()

//before close/reload browser 
$(window).bind("beforeunload", function(e) { 

    $.ajax({ 
    type:"POST", 
     url: "chat_online.php", 
     data:{ job: 'agent_on_off', id:to_id }, 
     success: function(t){ 

     }, 
    });   

}); 

ответ

2

Попробуйте с асинхронномом: ложным в Аяксу параметра. Это будет работать.

$.ajax({ 
    type:"POST", 
     url: "chat_online.php", 
     data:{ job: 'agent_on_off', id:to_id }, 
     async: false, 
     success: function(t){ 

     }, 
    }); 

Потому что на локальном хосте не имеет огромное запаздывание, с сервером вам нужно указать ждать ответ, потому что это занимает много времени (несколько миллисекунд, но все еще слишком много времени для асинхронного Задача)

+1

Поскольку на локальном хосте у вас нет большой латентности, с сервером вам нужно указать, чтобы ждать ответа, потому что требуется время (несколько мс, но все еще слишком много времени для задачи async). (Просто для объяснения немного больше;)) – AxelH

+0

@AxelH, спасибо за ваш описательный комментарий. –

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

  • Нет связанных вопросов^_^