Мой скрипт выполнял 2 одновременных вызова Ajax, и я заметил, что получал одинаковые результаты для каждого в обратном вызове, несмотря на то, что каждая страница имела совершенно другой контент. Это то, что первоначальный сценарий выглядел так:Одновременно запросы Ajax возвращают тот же результат
function getData(url) {
console.info(url);
$.ajax({
type: "GET",
url: url,
async: true,
success: function(data) {
var response = $(data);
var $products = response.find("#results tr");
}
});
}
getData("http://www.thompson-morgan.com/flower-bulb-sale")
getData("http://www.thompson-morgan.com/value-seed-varieties");
Проверка вкладку DevTools сети, каждый запрос действительно возвращался содержимое из первого запроса (http://www.thompson-morgan.com/flower-bulb-sale).
Первый запрос (http://www.thompson-morgan.com/flower-bulb-sale) производит правильный результат (это что желтый цветок, как это содержание страницы):
Но второй запрос (http://www.thompson-morgan.com/value-seed-varieties) дает результат с первого запроса !:
Единственное, что, казалось, не допустить этого слегка пошатываясь каждый вызов с SetTimeout как таковой:
setTimeout(function(){getData("http://www.thompson-morgan.com/flower-bulb-sale")}, 0);
setTimeout(function(){getData("http://www.thompson-morgan.com/value-seed-varieties")}, 1000);
Почему бы второй запрос возвращает содержимое от первого запроса? Есть ли способ обойти это без необходимости использовать пошаговые запросы, как я это сделал?
Звучит как проблема на стороне сервера. В лучшем случае исправление его клиентской стороны будет в худшем случае. –
может быть, что $ products переписывается? возможно, подумайте об использовании обещаний и обещаний. all() http://www.html5rocks.com/en/tutorials/es6/promises/ –
@JonahWilliams nope. поскольку проблема присутствует на вкладке сети. –