dataType'application/json'与'json'

Isa*_*aac 5 javascript jquery json

可能重复:
$ .ajax - dataType

我使用的是jQuery 1.8.2,由于某些原因'application/json'不起作用,但是对标准调用'json' 起作用.这是一个小故障吗?与版本相关的区别?或两者之间是否存在既定差异?dataTypejquery ajax

$(document).ready(function() {
    $.ajax({
        type : "POST",
        url : '<c:url value="/url.htm" >',
        //dataType : "application/json", <-- does not work
        dataType: 'json' // <-- works
        success : function(data) {
            // do something          
        },
        error : function(data) {
            // do something else
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

Mus*_*usa 10

dataType接受json,这意味着请求需要json响应.

contentType需要application/json,这意味着请求正在发送json数据

您可以在请求中发送和期望json,例如

$.ajax({
    type : "POST",
    url : url,
    contentType : "application/json", 
    dataType: 'json',
    data: JSON.stringify({some: 'data'}),
    success : function(data) {
        // do something          
    },
    error : function(data) {
        // do something else
    }
});
Run Code Online (Sandbox Code Playgroud)

在这里你发送json并期待xml

$.ajax({
    type : "POST",
    url : url,
    contentType : "application/json", 
    dataType: 'xml',
    data: JSON.stringify({xmlfile: 'file.xml'}),
    success : function(data) {
        // do something          
    },
    error : function(data) {
        // do something else
    }
});
Run Code Online (Sandbox Code Playgroud)

在这里你发送x-www-form-urlencoded(jQuery自动为你设置),并期待json回来

$.ajax({
    type : "POST",
    url : url,
    dataType: 'json',
    data: {id: '1'},
    success : function(data) {
        // do something          
    },
    error : function(data) {
        // do something else
    }
});
Run Code Online (Sandbox Code Playgroud)

contentType设置ContentTypeHTTP请求标头,告诉服务器该请求的主体是给定类型的.
dataType设置Accept标头以告诉服务器这是我们想要的响应类型,例如

Accept:application/json, text/javascript, */*; q=0.01
Run Code Online (Sandbox Code Playgroud)

但无论服务器发送什么类型的响应,jQuery仍将尝试将其解析为您在dataType字段中设置的任何类型.