javascript jquery post () / get () JSON-объект как функция закрытия перед тем, как документ будет готов - PullRequest
0 голосов
/ 17 февраля 2012

Я пытаюсь выяснить, как лучше всего обработать объект JSON, который мне нужно опубликовать / получить, когда документ готов, чтобы я мог затем запустить другую функцию, которая создает DOM на основе указанного объекта JSON.Этот объект также является чем-то, что обновляется каждые 30 секунд до минуты.

Моя первоначальная мысль состояла в том, чтобы построить его как замыкание.IE:

var myJSONobject = $.post(uri, function(data){return data;});

, однако функция, которую я запускаю, когда готов для документа, и функции, основанные на событиях щелчка, не распознают объект как действительный.Он возвращает объект JSON, и я использовал jsonlint.com для подтверждения правильности формата объекта.Так что я думаю о том, как я справляюсь с чередой событий.Там, где объект, хотя и может быть законным, визуализируется после того, как документ готов, что в некотором смысле нарушает функциональность.Потому что, если я возьму тот же объект, он выплевывает и жестко кодирует его как переменную.Код, над которым я работал, работает нормально.Итак, теперь я пытаюсь выяснить, каков мой лучший подход к решению этой проблемы, поэтому мой сценарий не ломается преждевременно.и двое выясняют, правильно ли я пытаюсь приспособить это как замысел?Какова логика хорошей практики в этом типе senario?Должен ли я загружать объект JSON в скрытый блок где-нибудь или в текстовую область и разбирать его через это, или я не знаю.

Ответы [ 2 ]

4 голосов
/ 17 февраля 2012
Функция

$.post фактически не возвращает возвращаемого значения функции успеха, поэтому вы не можете просто присвоить ей myJSONobject.

Что вы действительно хотите сделать, это

var myJSONobject;
$.post(uri, function(data){
    myJSONobject = data;
    // OR work with data here
});

// You cannot use myJSONobject right away

Но будьте осторожны, вы не можете получить доступ к myJSONobject сразу после вызова $.post, вам нужно подождать, пока вызов ajax завершится успешно.

0 голосов
/ 17 февраля 2012

Если вам нужен объект прямо перед document.ready, используйте технологию jsonp и загрузите этот скрипт в документы <head>. Или лучше загрузить его в конце <body>, и скрипты, которые в нем нуждаются, сразу после него.

...