У меня есть сайт, который имеет простой запрос AJAX на странице загрузки:AJAX не ждать ответа
$(document).ready(function() {
$.get("ajax.php?do=something", function(response) {
alert('response');
});
});
Этот запрос занимает около 15 секунд на моей локальной тестовой машине. Ajax.php действительно использует session_start(), но вызывает session_write_close() сразу после (почти сразу после - она вызывается перед любой из интенсивной обработки производится):
<?php
session_start();
if(empty($_GET['do']))
die("!Invalid request.");
$do = $_GET['do'];
if($do=="something-else")
{
}
else if($do=="something")
{
session_write_close();
$customerId = $_SESSION['customerId'];
//processing done here
}
?>
Проблема заключается в том, что как только эта страница загружается , AJAX запускается, но если пользователь нажимает на ссылку, чтобы перейти на другую страницу, браузер ждет 15 секунд, а затем перенаправляет.
Я хочу, чтобы пользователь перешел на другие страницы, не дожидаясь, или если они останутся, я хочу, чтобы они увидели ответ.
EDIT Просто уточнить это немного больше. На каждой странице есть session_start() вверху, включая ту, к которой пользователь пытается перейти.
Я использую сессию в ajax.php и отредактировал исходный вопрос, чтобы отразить это.
Исправьте меня, если я ошибаюсь, но если вы отскакиваете от страницы, пока процедура AJAX все еще работает, не будет ли она удалять кеш-кеш и ошибку? – DevlshOne
Используйте функцию успеха вызова ajax http://api.jquery.com/jQuery.ajax/ – Ali
Весь этот сценарий звучит очень странно ... 15 секунд - это вечность, когда дело доходит до ajax, но похоже, t нужно, чтобы пользователь имел данные. Никогда не видели, чтобы пользователь ajax-запроса блокировал доступ к другой странице – charlietfl