Не передает значение массива внутрь $.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, время: 07:04. |