2010-03-29 2 views
1

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

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

спасибо.

+6

определить «потребности». как только вы это сделаете, вы будете знать, что использовать. – Iraklis

+0

Вы получите более релевантный ответ, если вы укажете, какие технологии вы используете. Например, если вы используете .Net и Web Services, вероятно, вы должны использовать только $ .ajax() (см. Сообщение ниже). – Armstrongest

+0

Вы правы, отредактировал вопрос. – thedp

ответ

5

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

+1

Я полностью забыл об обработке ошибок здесь. Спасибо! :) – thedp

4

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

2

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

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

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

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

2

$ .post и $ .get и $ .getJSON - все удобные методы, которые обертывают $ .ajax. Вы выбираете только вопрос стиля.

+0

Кажется странным, что все это для простого решения стиля. – thedp

+0

Речь идет не о стиле, а о необходимости. Потребность продиктована концом обслуживания решения ajax. Это часть контракта, который должен использоваться http POST или http GET. И если вы используете '.get' для извлечения данных, которые являются JSON,' $ .getJSON' - хороший метод удобства –

+1

, если бы о необходимости не было никакой функции $ .ajax общего назначения. –

3

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

Однако, если вы используете 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" }); 
6

Это действительно зависит от того, не AJAX или JQuery, специфические, речь идет о протоколе HTTP.

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

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

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

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

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

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

+0

просто хотел добавить примечание: '$ .getJSON' предназначен для обработки JSON только в GET. – thedp

1

The documentation для коротких ручных методов, таких как $.get() и $.post(), описывают, что такое эквивалент $.ajax().

Например ГЭТ описывает:

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

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

+1

Я читал, и это меня смущает. Почему я должен $ .ajax, а не $ .post и наоборот. – thedp

+1

иногда '$ .post' или' $ .get' недостаточно гибкий. В прошлый раз мне понадобился '$ .ajax', мне нужно, чтобы запрос получения был синхронным, где' $ .get' является асинхронным. –