2015-07-02 3 views
0

Я хочу загрузить JSON с моего сервера и использовать его с помощью jQuery. Итак, я написал некоторый исходный код. Вот мой код:Я думаю, что мой код jQuery прав, но консоль говорит, что он не определен

var myData; 
$.ajax({ 
    url: "https://httpbin.org/get", 
    success: function (json) { 
     myData = json; 
    } 
}); 
console.log(myData); 

Я думаю, что консоль должна сказать значение JSON. Но когда я запускаю этот код, консоль говорит, что это значение undefined. Что не так?

+0

Aaand еще раз это. – briosheje

ответ

0

Ajax вызов является асинхронным, попробуйте:

var myData; 
$.ajax({ 
    url: "https://httpbin.org/get", 
    success: function (json) { 
     myData = json; 
     console.log(myData); 
    } 
}); 

EDIT:

Javascript является синхронным, это Ajax вызов, который не является, в то время вы просите для запроса Ajax, Javascript запускает вызов, а затем продолжает читать ваш код. Ответ Ajax возникает, когда сервер отвечает. Если вы хотите, чтобы ваш код синхронными вы можете написать:

var myData; 
$.ajax({ 
    url: "https://httpbin.org/get", 
    success: receivedDatas 
}); 
function receivedDatas(res){ 
    myData = json; 
    console.log(myData); 
} 

Тогда ваш JS не будет делать ничего, пока ответ приходит

RE-EDIT:

Чтобы завершить ответ, как @fiddler писал:

Обратите внимание, что $ .ajax() имеет параметр асинхронного (истинный по умолчанию), которые вы можете использовать , чтобы сделать его синхронным (см api.jquery.com/jquery.ajax)

+0

Я читаю JavaScript в асинхронном режиме в Интернете много раз, но я действительно не могу понять. Вы можете объяснить об этом? – youngminz

+0

См. Мое редактирование – Sacreyoule

+0

Не совсем, JS [не может иметь многопоточность] (http://www.sitepoint.com/multi-threading-javascript) – Sacreyoule

Смежные вопросы