AJAX请求中的类型和数据类型?

什么是POST请求中的内容类型和数据类型? 假设我有这个:

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

    },
    error : function(error) {

    },

contentType是我们发送的内容? 那么我们在上面的例子中发送的是JSON,我们收到的是纯文本? 我不太明白。


contentType是你发送的数据的类型,所以application/json; charset=utf-8 application/json; charset=utf-8是一个常见的application/x-www-form-urlencoded; charset=UTF-8 application/x-www-form-urlencoded; charset=UTF-8 ,这是默认值。

dataType是你期待从服务器json的内容: jsonhtmltext等.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数据,并且:

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's optional
    data : data,
    success : function(result) {
        jQuery("#someContainer").html(result); // result is the HTML text
    },
});

从jQuery文档 - http://api.jquery.com/jQuery.ajax/

contentType将数据发送到服务器时,使用此内容类型。

dataType您期待从服务器返回的数据的类型。 如果没有指定,jQuery将尝试根据响应的MIME类型推断它

“文本”:一个纯文本字符串。

所以你想让contentType成为application/json和dataType成为text

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

    },
    error : function(error) {

    }
});

请参阅http://api.jquery.com/jQuery.ajax/,其中提到了数据类型和contentType。

它们都用于请求到服务器,所以服务器知道接收/发送什么样的数据。

链接地址: http://www.djcxy.com/p/1251.html

上一篇: type and datatype in an AJAX request?

下一篇: jQuery won't parse my JSON from AJAX query