У меня возникли трудности с доступом requestJSON
к объекту jQuery $ .ajax за пределами обратного вызова успеха. Если я:Асинхронно заполняет Sammy.Storage cache
var ajax_request = $.ajax({
dataType: 'json',
contentType: 'application/json'
});
console.log(ajax_request.responseJSON);
// this results in `undefined`
Как я могу получить доступ к responseJSON без добавления .success()
обратного вызова? Если я осмотреть ajax_request
в Firebug, я могу видеть responseJSON
собственность, и данные, которые я ожидал, но я не могу получить доступ к нему через:
ajax_request.responseJSON
Более конкретно, я строить SPA с помощью Сэмми и Knockout. В некоторых маршрутах, мне нужно, чтобы иметь возможность получить JSON из кэша, и если он не существует, получить значение от вызова службы, а затем установить его в кэш:
var cached_json = storage.fetch('cached_json', function() {
// make service call
return $.getJSON(url);
});
event_context.render('template.tpl', {'json': cached_json}).appendTo('#my-target');
Но, конечно же, называя storage.fetch не приводит к остановке остальной части кода до завершения $ .getJSON. Это та часть, которую я не могу понять, как структурировать.
$ .getJSON (REQUESTPARAMS) –
возможно дубликат [Как вернуть ответ от AJAX вызова?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-a-ajax-call) – Musa
$ .getJSON по умолчанию асинхронно, и в некоторых случаях мне нужно сделать синхронный вызов. Я не вижу вариант конфигурации для .getJSON, чтобы сделать его синхронным ... – Brandon