В целом оба способа на практике очень близки . Функция $.post
или $.ajax
будет кодировать отправленные данные таким же образом . Если вы хотите опубликовать данные JSON, вам следует дополнительно кодировать данные значение с помощью некоторого кодировщика JSON. См. Как мне построить объект JSON для отправки в AJAX WebService? в качестве примера ($.post
- это краткая форма $.ajax
, поэтому все, что описано с $.ajax
и исправлено также для $.post
)
$.post('somescript.php', { data: JSON.stringify($('#myInputField').val()) }, ...);
В приведенном выше коде я использую JSON.stringify
из http://www.json.org/js.html.
ОБНОВЛЕНО : После ваших вопросов в комментарии, я надеюсь, я понимаю больше, что вы хотите знать. Поэтому jQuery.post не выполняет JSON-кодировку данных для вас для и входных параметров (второй параметр jQuery.post
). Таким образом, он отправляет данные всегда точно так же. Вы можете добавить дополнительный параметр "json" (последний параметр dataType
) к вызову $.post
, но это не изменит способ кодирования данных.
Вопрос "я должен отправлять данные JSON на сервер или нет?" не зависит от $.post
, и вы должны ответить на вопрос самостоятельно, в зависимости от требований, существующих в вашем проекте. Когда-нибудь это вопрос архитектуры вашего решения. Иногда нужно выбрать один особый способ.
Например, в случае веб-службы Microsoft ASMX существуют некоторые важные ограничения. Например, вы хотите доставлять данные JSON из веб-службы, чтобы иметь возможность легко работать с данными в JavaScript. Итак, вы хотите иметь метод на стороне сервера, который имеет некоторые входные параметры и возвращает JSON в качестве вывода. В случае если веб-служба ASMX должна отправить все входные параметры в метод веб-службы в виде данных в кодировке JSON, чтобы иметь возможность возвращать данные JSON из веб-службы, но веб-служба ASMX декодирует / кодирует данные для вас вам не нужно вручную кодировать / декодировать JSON на стороне сервера.