У меня возникли проблемы с асинхронным характером Javascript/JQuery.
Давайте скажем следующее (задержка не подсчитывается, чтобы не сделать ее настолько трудной);
У меня есть три кнопки (A, B, C) на странице, каждая из которых добавляет элемент в корзину покупок с одним ajax-запросом. Если я помещаю преднамеренную задержку в 5 секунд на serveride script (PHP) и нажимает кнопки с 1 секундой друг от друга, я хочу, чтобы результат был следующим:
Request A, 5 seconds
Request B, 6 seconds
Request C, 7 seconds
Однако результат такой же
Request A, 5 seconds
Request B, 10 seconds
Request C, 15 seconds
Это должно означать, что запросы находятся в очереди и не запускаются одновременно, правильно? Разве это не противоположность тому, что такое асинхронное? Я также попытался добавить случайный параметр get к URL-адресу, чтобы придать некоторую уникальность запросу, но не повезло.
Я немного читал об этом. Если вы избегаете использования одного и того же "объекта запроса (?)", Эта проблема не будет возникать. Можно ли заставить это поведение в JQuery?
Это код, который я использую
$.ajax(
{
url : strAjaxUrl + '?random=' + Math.floor(Math.random()*9999999999),
data : 'ajax=add-to-cart&product=' + product,
type : 'GET',
success : function(responseData)
{
// update ui
},
error : function(responseData)
{
// show error
}
});
Я также пробовал как GET, так и POST, никакой разницы.
Я хочу, чтобы запросы отправлялись прямо при нажатии кнопки, а не при завершении предыдущего запроса. Я хочу, чтобы запросы выполнялись одновременно, а не в очереди.