Не передает значение массива внутрь $.ajax
Есть такой код:
function exist()
{
var arr = ["1", "2", "3"];
for(var i=0; i<arr.length; i++) {
// здесь значение arr[i] еще передается
$.ajax({
url: "/admin/sys/db/" + arr[i] + "-log.txt",
dataType:"text",
cache: false,
success: function(){
// а здесь уже нет, arr[i] - undefined
$('#skeleton-' + arr[i] + '').hide(); $('#frame-' + arr[i] + '').show();
},
error: function(){
//alert("/admin/sys/db/" + arr[i] + "-log.txt");
$('#skeleton-' + arr[i] + '').show(); $('#frame-' + arr[i] + '').hide();
}
});
}
}
Внимание ВОПРОС (уважаемые знатоки) , почему внутрь ajax не передается значение массива arr[i] (определяется как undefined) |
Arr переменная функции exist и она не видна для функции success
|
Логично. как сделать что бы видела? =
|
У тебя цикл for в котором отправляются ajax запросы тут нет ни капли логики
Для того что бы видела нужно что бы arr была в зоне видимости. А для этого нужно читать и изучать зоны видимости в javascript |
kapustnik,
Или так:
function exist(){
["1", "2", "3"].forEach(function(elem, index){
$.ajax({
url: "/admin/sys/db/" + elem + "-log.txt",
dataType: "text",
cache: false,
success: function(){
$('#skeleton-' + elem + '').hide(); $('#frame-' + elem + '').show();
},
error: function(){
$('#skeleton-' + elem + '').show(); $('#frame-' + elem + '').hide();
}
});
});
}
}
Но вообще лучше чем в цикле дергать аякс сделать 1 запрос, который бы давал сразу всю информацию. |
| Часовой пояс GMT +3, время: 20:35. |