2014-01-20 4 views
0

Я действительно не знаю, что я делаю неправильно здесь. Я не могу переназначить переменную poster_path плакатным путем, полученным в JSON-вызове. Теперь меня удивляет то, что я пытался это сделать async to false. И это не сработало.async false с JSON-вызовом не работает (javascript)

Я искал несколько существующих ответов, таких как этот (How do I return the response from an asynchronous call?), но не нашел решения.

function getPoster(id) { 
var poster_path = null; 

$.getJSON("https://api.moviedb.org"+id+"?", {async: false}, function(data) { 
     poster_path = data.poster_path; 
    } 
} 

PS: API-вызов был укоренен специально для этого примера. Я знаю, что он работает и возвращает правильные данные.

+0

Это может быть полезно: https://stackoverflow.com/questions/14152276/themoviedb -json-api-with-jquery – Andy

+1

Второй параметр - это данные, а не параметры, см. документы здесь http://api.jquery.com/jquery.getjson/. вместо этого используйте $ .ajax. – Andrew

ответ

1

$.getJSON функция является сокращенной версией метода $.ajax. Поскольку это сокращенная версия, она делает определенные предположения, и один из них заключается в том, что вызов будет async.

Если вы хотите, чтобы с помощью синхронизации вызова , который не рекомендуется то вы хотите что-то вроде

$.ajax({ 
    'async'   : true, 
    'dataType'  : 'json', 
    'contentType'  : 'application/json', 
    'url'    : 'https://api.moviedb.org'+id+'?', 
    'success'   : function (data){ 
         poster_path = data.poster_path; 
         } 
}); 
Смежные вопросы