jquery $ .post второй аргумент.- JSON или строка запроса? - PullRequest
2 голосов
/ 23 августа 2010
$.post('somescript.php', { data: $('#myInputField').val() },
    function(replyData) {

1) Является ли второй аргумент этого метода $ .post - в json?

ИЛИ

2) Isвторой аргумент этого метода $ .post строка запроса?

Заранее спасибо, MEM

Примечание: если этот вопрос не имеет смысла, пожалуйста, зная почему (это не имеет смысла) также может помочь и может быть воспринято как правильный ответ.

1 Ответ

2 голосов
/ 23 августа 2010

В целом оба способа на практике очень близки . Функция $.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 на стороне сервера.

...