Вопрос по ajax, json, jquery – разница между $ .getJSON и $ .get

25

Есть ли разница в этих двух звонках? Если вы используете getJSON, вы все равно должны объявитьformat=json в URL ...

И вы можете сделать то же самое в$.get()и итерации по JSON-объекту.

Или я далеко отсюда?

Я видел, что вы приняли ответ. Но, честно говоря, никто не указал на тот факт, что я упомянул так же прямо, как и я. Может быть, вы сейчас ясно об этом. Так хорошо для тебя! kushalvm
Вы на самом делеare не в курсе здесь. при использованииgetJSON() метод тыDON'T должны явно передать тип данных, но вget() Метод вы будете эксплицитноHAVE TO , Смотрите комментарий выше от Yehuda. Он рассказывает всю историю или посещениеhttp://api.jquery.com/jQuery.getJSON/ kushalvm
То, что вы должны объявить в URL, не имеет ничего общего с jQuery. И это не относится ко всем сайтам - конечно, не к одному из моих ;-) NickFitz
Я только что сказал, что вы должны указать в URL, что вы ищете результат JSON, даже если вы используете getJSON. И вы также объявите это в URL для $ .get (). Просто интересно, что делает один, а другой нет ... peirix

Ваш Ответ

3   ответа
2

Различия между $ .getJSOn и $ .get заключаются в параметрах:

  1. $.getJSON accepts plain objects as data while $.get accepts plain objects or string.
  2. $.get has dataType parameter.

Таким образом, использование $ .get с dataType: JSON будет работать точно так же, как и $ .getJSON.

45

Следующие два фрагмента эквивалентны:

$.get("/some/url", {data: "value"}, function(json) { 
  // use json here
}, "json")

$.getJSON("/some/url", {data: "value"}, function(json) {
  // use json here
});

Сказать, что запрос дляJSON означает две вещи:

  • jQuery sends an Accept: application/json header
  • jQuery interprets the inbound response, converts it into a JavaScript Object, and passes it into the callback (so you don't have to mess with eval or other conversion mechanism).

Ряд серверных структур (таких как Rails) автоматически обнаруживаетAccept заголовок и обработать запрос соответствующим образом. Если вы используете другой фреймворк или катитесь самостоятельно, вы можете проверитьAccept заголовок для определения формата (вместо проверки параметров).

Я также должен отметить, что причина, по которой было добавлено решение заголовка Accept, заключалась в том, чтобы обслуживать фреймворки, которые его корректно обрабатывают, делая связь между jQuery и такими фреймворками (например, Rails) бесшовной.
7

Я думаю, что документация объясняет это довольно ясно!

http://docs.jquery.com/Ajax/jQuery.get#urldatacallbacktype

Загрузите пультpage используя запрос HTTP GET.

http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback

Загрузить JSONdata используя запрос HTTP GET.

Помните, что это всего лишь абстракции метода .ajax

Но можно все еще использовать $ .get для получения данных JSON, верно? Если страница, которую вы вызываете, возвращает JSON-объект? peirix
Конечно, я полагаю, если вы укажете «данные»; аргумент как JSON. Если страница возвращает json, почему бы просто не использовать метод getJSON? Опять же, это всего лишь абстракции для упрощения вызовов ajax из базового метода .ajax. Они здесь, чтобы вам было проще, а не усложнять!
Я использовал $ .get без аргумента данных, и он работает просто отлично. Документ API говорит, что по умолчанию для аргумента данных используется «интеллектуальная догадка», и поэтому, очевидно, jQuery правильно угадывает в моих случаях использования ;-)

Похожие вопросы