#javascript #jquery #json
#javascript #jquery #json
Вопрос:
Я скачал некоторый код, и в нем был следующий фрагмент:
function GetCommentBySessionIDWCF_JSON() {
varType = "POST";
varUrl = "service/CommentSessionIDWCFService.svc/GetCommentsByPost";
varData = '{"SessionID": "' '123' '"}';
varContentType = "application/json; charset=utf-8";
varDataType = "json";
varProcessData = true;
//now to do the clever stuff
$.ajax({
type: varType, //GET or POST or PUT or DELETE verb
url: varUrl, // Location of the service
data: varData, //Data sent to server
contentType: varContentType, // content type sent to server
dataType: varDataType, //Expected data format from server
processdata: varProcessData, //True or False
success: function (data) {//On Successfull service call
$.each(data.GetCommentsByPostResult, function (e) {
alert(e.CommentText);
});
},
error: ServiceFailed// When Service call fails
});
Мне интересно, почему я должен отправлять JSON с этим сообщением? Я прочитал документацию jQuery, и в ней говорится:
«Данные, которые должны быть отправлены на сервер. Он преобразуется в строку запроса, если уже не является строкой. Он добавляется к URL для GET-запросов. Смотрите параметр ProcessData, чтобы предотвратить эту автоматическую обработку. Объект должен быть парами ключ / значение. Если значение является массивом, jQuery сериализует несколько значений с одним и тем же ключом на основе значения традиционной настройки (описано ниже).»
Но когда я изменил JSON в ‘data’ на строку, я получаю ошибку 400. почему?
Комментарии:
1. Просто должна быть возможность по умолчанию использовать тип данных string, если вы удалите его из этого скрипта.
2. задайте тип данных в ваших параметрах ajax
Ответ №1:
Это не JSON, это объект, содержащий пары ключ / значение, который отображается в HTTP ?param=value
для отправки на сервер.
Комментарии:
1. Только для запроса GET. он отправляет POST.
2. Принцип тот же, строка запроса просто не отображается в URL.
3. ах, я понимаю, так что мне интересно, является ли это стандартной практикой в сценарии post? Все ли сообщения состоят из пар ключ-значение?
4. Именно так вы отправляете данные в HTTP-запросах. ПОЛУЧИТЬ POST, ПОМЕСТИТЬ, УДАЛИТЬ, вы называете это. Все они используют один и тот же механизм.
5. круто, да, хорошо, все еще учусь, просто посмотрел на определение POST в Википедии, и да, это имеет смысл. Снова и снова Get it содержит только пары ключ-значение, которые имеют urlencoded…