Что такое тип содержимого и тип данных в запросе AJAX?

Что такое тип содержимого и тип данных в запросе POST? Предположим, что у меня есть это:

$.ajax({
    type : "POST",
    url : /v1/user,
    datatype : "application/json",
    contentType: "text/plain",
    success : function() {

    },
    error : function(error) {

    },

Есть ли contentType то, что мы отправляем? Итак, что мы посылаем в приведенном выше примере, это JSON, и мы получаем простой текст? Я действительно не понимаю.

Ответ 1

contentType - тип данных, которые вы отправляете, поэтому application/json; charset=utf-8 является общим, а application/x-www-form-urlencoded; charset=UTF-8 - по умолчанию.

dataType - это то, что вы ожидаете от сервера: json, html, text и т.д. jQuery будет использовать это, чтобы выяснить, как заполнить параметр функции успеха.

Если вы публикуете что-то вроде:

{"name":"John Doe"}

и ожидая назад:

{"success":true}

Затем вы должны иметь:

var data = {"name":"John Doe"}
$.ajax({
    dataType : "json",
    contentType: "application/json; charset=utf-8",
    data : JSON.stringify(data),
    success : function(result) {
        alert(result.success); // result is an object which is created from the returned JSON
    },
});

Если вы ожидаете следующего:

<div>SUCCESS!!!</div>

Тогда вы должны сделать:

var data = {"name":"John Doe"}
$.ajax({
    dataType : "html",
    contentType: "application/json; charset=utf-8",
    data : JSON.stringify(data),
    success : function(result) {
        jQuery("#someContainer").html(result); // result is the HTML text
    },
});

Еще один - если вы хотите опубликовать сообщение:

name=John&age=34

Тогда не stringify данные, а do:

var data = {"name":"John", "age": 34}
$.ajax({
    dataType : "html",
    contentType: "application/x-www-form-urlencoded; charset=UTF-8", // this is the default value, so it optional
    data : data,
    success : function(result) {
        jQuery("#someContainer").html(result); // result is the HTML text
    },
});

Ответ 2

Из документации jQuery - http://api.jquery.com/jQuery.ajax/

contentType При отправке данных на сервер используйте этот тип содержимого.

dataType Тип данных, которые вы ожидаете от сервера. Если ни один не указан, jQuery попытается вывести его на основе MIME-тип ответа

"text": простая текстовая строка.

Итак, вы хотите, чтобы contentType был application/json и dataType равным text:

$.ajax({
    type : "POST",
    url : /v1/user,
    dataType : "text",
    contentType: "application/json",
    data : dataAttribute,
    success : function() {

    },
    error : function(error) {

    }
});

Ответ 3

Смотрите http://api.jquery.com/jQuery.ajax/, там упоминается тип данных и contentType.

Они оба используются в запросе на сервер, чтобы сервер знал, какие данные должны получать/отправлять.