У меня есть веб-приложение, которое загружает другой контент в один и тот же div (.content), используя либо запрос ajax, либо запрос .load().jQuery .load не работает, пока выполняется запрос ajax
Упрощенная версия запроса Ajax является:
$(document).on('click', '.button1', function() {
$.ajax({
type: "POST",
url: "/path/to/file/ajax.php",
data: {
'param1': 'xyz',
'param2': '123',
},
timeout: 10000,
dataType: "json",
success: function(data) {
if (data.status == 'Success') {
$('.content').html(data.result);
} else if (data.status == 'Error'){
console.log('Something went wrong')
}
},
error: function(x, status, error) {
if (status === "timeout") {
console.log('Request Timed Out');
}
},
});
});
на другой кнопке у меня есть:
$(document).on('click', '.button2', function() {
$('.content').load('/path/to/file/getContent.php?ref=foo');
});
Проблема заключается в том, что если я нажимаю на Button1, а затем нажмите на кнопку 2 в то время как запрос ajax все еще выполняется, ничего не происходит. (т. е. getContent.php, похоже, ничего не возвращает в течение 15-30 секунд)
Нажатие кнопки 2 возвращает результаты мгновенно, но как только нажата кнопка1 и выполняется запрос ajax, похоже, «затормозит» все веб-приложение до его завершения (или ошибок).
(Я также попытался использовать метод abort() для отмены запроса ajax, но та же проблема сохраняется, даже когда прервать успешно).
UPDATE См решение/ответ ниже
Это скорее всего не интерфейсный, а сервер, который является проблемой. PHP иногда имеет проблемы с несколькими запросами, используя одни и те же переменные сеанса и т. Д. – adeneo
@adeneo Спасибо за ваш ответ - я удалил session_start() из ajax.php и getContent.php (они, вероятно, были переполнены, так как они также вызываются на странице main.php), и это, похоже, устранило проблему! Проделайте еще несколько проверок перед публикацией обновления. – JS77