2013-06-25 3 views
1

У меня странная ошибка. Когда я пытаюсь запустить мой код:jquery каждый json переменная ошибка

var firstJson; 
$.getJSON(site_url+"/more/sector_by_city/"+id+"?"+Math.random(), function(json) { 
    $.each(json, function(key, value) { 
     firstJson = 9; 
    }); 
}); 
alert(firstJson); 

Предупреждение я получаю: "undefined".

Почему я получил это вместо получения 9?

Что мне здесь не хватает?

(каждый цикл работает без проблем, и в JSON есть значения) В конце 9 изменяется на другое значение.

Thanks

ответ

2

Эта переменная не имеет значения, когда вызывается alert. Вам нужно будет подождать getJSON, используя done().

var firstJson; 
$.getJSON(site_url+"/more/sector_by_city/"+id+"?"+Math.random(), function(json) { 
    $.each(json, function(key, value) { 
     firstJson = 9; 
    }); 
}).done(function() { 
    alert(firstJson); 
}); 

Ссылки:

  1. done()
  2. $.getJSON
6

Async выполняет функции моего друга. Ваше оповещение вызывается до того, как ваш запрос .getJSON будет завершен. Вам нужно будет использовать функцию обратного вызова, чтобы получить правильное предупреждение.

4

Потому что, когда вы звоните alert(firstJson), асинхронный вызов $.getJSON еще не завершен, поэтому firstJson не имеет значения, связанного с ним. Если вы переместите свое предупреждение в функцию $.each или после $.each, а в конце $.getJSON оно будет иметь значение.