JQuery и AJAX, что я должен использовать? - PullRequest
1 голос
/ 29 марта 2010

Я решил использовать jQuery для удовлетворения всех моих потребностей клиента, связанных с AJAX. Но в jQuery слишком много функций для одной и той же задачи: $ .post, $ .get, $ .ajax, $ .getJSON ... У меня вопрос, что я должен использовать?

EDIT: Я собираюсь использовать POST и JSON для подключения к PHP-инфраструктуре CodeIgniter.

Спасибо.

Ответы [ 7 ]

6 голосов
/ 29 марта 2010

Это действительно зависит, это не спецификация AJAX или jQuery, это протокол HTTP.

Метод POST должен использоваться для отправки данных, которые передаются один раз, например, в форме. Метод POST & GET не имеет такого же ограничения длины, вы можете использовать POST для отправки большего количества данных, чем с помощью GET.

GET используется для «получения» статической страницы. (хотя это не совсем так, но в любом случае, вы понимаете, в чем дело)

Например, когда форма отправляется, используется метод POST, поскольку содержимое результата относится к этому запросу.

Также вы должны заметить, что POST никогда не будет кэшироваться вашим браузером или jQuery.

$. Post & $ .get - это просто прокси-метод для $ .ajax (параметры);

и $ .getJSON специально разработаны для обработки результатов JSON только методом GET (благодаря thedp)

5 голосов
/ 29 марта 2010

Используйте $.ajax и всегда, всегда, всегда включайте параметр error (который сокращенно оставляют $.post и $.get необъяснимым образом вне & ndash; иногда короткое - это немного слишком короткое). Если вы не живете в идеальном мире, где ничто не идет не так, как надо, в каком случае, где я подписываюсь? : -)

4 голосов
/ 29 марта 2010

Большинство из них - просто короткая рука для $ .ajax, который я обычно использую.

3 голосов
/ 29 марта 2010

Это действительно зависит от ситуации.

Однако, если вы используете ASP.Net с веб-службами, вам, вероятно, захочется использовать метод $ .ajax, поскольку вам нужно передать пустой набор данных.

В этом блоге объясняется, почему:

http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

Пример:

$.ajax({
  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: "WebService.asmx/WebMethodName",
  data: "{}",
  dataType: "json"
});

Как видите, метод $ .ajax () позволяет вам указать «GET» (передается в строке запроса) или «POST» (передается в запросе)

Да, это более "сложно", но вы можете использовать $ .ajaxSetup () для упрощения вызова:

Вот сообщение в блоге об этом: http://encosia.com/2009/07/21/simplify-calling-asp-net-ajax-services-from-jquery/

Пример с этой страницы:

$.ajaxSetup({
  type: "POST",
  contentType: "application/json; charset=utf-8",
  data: "{}"
});

Это устанавливает значения по умолчанию для значений в $ .ajax, поэтому вам не нужно их устанавливать.

Ваш код может быть таким простым:

$.ajax({
   url: "HelloWorld.asmx/Hello",
   success: function(msg) {
      /* Do Stuff */
  }
});

или даже:

$.ajax({ url: "HelloWorld.asmx/Hello" });
2 голосов
/ 29 марта 2010

$. Post и $ .get и $ .getJSON - все вспомогательные методы, которые заключают в оболочку $ .ajax. Те, которые вы выбираете, просто вопрос стиля.

2 голосов
/ 29 марта 2010

Нет, вопрос в том, что вы хотите сделать?

Если вы отправляете данные обратно в формате, отличном от JSON, нет причин использовать $ .getJSON.

$. Ajax более настраиваемый, но более сложный, чем другие функции.

Я обычно выбираю между $ .post и $ .get.

1 голос
/ 29 марта 2010

Документация для таких методов сокращения, как $.get() и $.post(), описывает эквивалент $.ajax().

Например, get описывает:

$.ajax({
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

Короткая история: прочитайте документы, чтобы узнать, что и для чего и что отвечает вашим потребностям

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...