Я создаю интерактивную карту. Я не буду вдаваться в подробности. Но идея состоит в том, что пользователь нажимает на год (хранится в вар CURRENTYEAR), а затем нажимает на страну (имя хранится в вар thenameonly), а затем следующий Ajax работает с использованием как ВАР:Ajax json timeout/должен быть более эффективным
$.ajax({
async: false,
url: url, // JQuery loads content.json
contentType: "application/json",
dataType: 'json',
timeout: 100000,
success: (function(data) {
alert('success');
$.each(data[thenameonly], function() {
$.each(this[currentyear], function() {
if(this.pol_type == 'images/gov_icon.svg'){
govcount++;
} else if(icon == 'images/stock_x_icon.svg'){
stockcount++;
}
});
});
}),//SUCCESS
complete: (function(){
alert('complete');
$(".gov_numb").html(govcount);
$(".stock_numb").html(stockcount);
}),//COMPLETE
error: function(jqXHR, textStatus, errorThrown) {
console.log(JSON.stringify(jqXHR));
console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
}//ERROR
});
Он работает для в то время как пользователь продолжает нажимать (иногда в той же стране в том же году, выполняя тот же запрос), в конечном итоге функция успеха задерживается, иногда примерно за 5 секунд до запуска.
Это был тайм-аут, но я увеличил это, потому что полная функция работала до успеха, что вызывало другие проблемы.
Вот файл JSON для справки
{
"argentina": [
{
"2004": [
{
"pol_type":"images/gov_icon.svg",
"policy":"pol info"
}
],
"2006": [
{
"pol_type":"images/gov_icon.svg",
"policy":"pol info"
}
],
"2008": [
{
"pol_type":"images/gov_icon.svg",
"policy":"pol info"
}
]
}
],
"australia": [
{
"1998": [
{
"pol_type":"images/gov_icon.svg",
"policy":"pol info"
}
],
"2001": [
{
"pol_type":"images/gov_icon.svg",
"policy":"pol info"
}
],
"2004": [
{
"pol_type":"images/stock_x_icon.svg",
"policy":"pol info"
}
],
"2006": [
{
"pol_type":"images/gov_icon.svg",
"policy":"pol info"
},
{
"pol_type":"images/gov_icon.svg",
"policy":"pol info"
}
],
"2007": [
{
"pol_type":"images/gov_icon.svg",
"policy":"pol info"
}
],
"2010": [
{
"pol_type":"images/gov_icon.svg",
"policy":"pol info"
},
{
"pol_type":"images/gov_icon.svg",
"policy":"pol info"
},
{
"pol_type":"images/stock_x_icon.svg",
"policy":"pol info"
}
],
"2011": [
{
"pol_type":"images/gov_icon.svg",
"policy":"pol info"
}
],
"2013": [
{
"pol_type":"images/gov_icon.svg",
"policy":"pol info"
}
],
"2014": [
{
"pol_type":"images/stock_x_icon.svg",
"policy":"pol info"
}
]
}
]
}
У меня есть много других стран и политики и т.д., чтобы добавить, так что я боюсь, что моя структура собирается привести к его поломке полным.
Любая помощь будет оценена!
Карл
'timeout: 100000', вероятно, является причиной ваших проблем. И вы, возможно, захотите пересмотреть свой «асинхронный: ложный». – Andy
Привет @Andy, спасибо за ответ, но, как я сказал, я установил тайм-аут на 100000, потому что, ну, это был тайм-аут, и я пытаюсь определить, почему он это делает. Добавление async: false что-то еще я пытался исправить проблему. После того, как я запустил ajax (щелкнул страну) примерно в 25-30 раз, успех начался с отставанием, занимает около 5-10 секунд, чтобы запустить предупреждение («успех»). – epluribusunum
- это «url», изменяющийся между вызовами? – Igor