【问题标题】:dataType 'application/json' vs. 'json' [duplicate]数据类型“应用程序/json”与“json”[重复]
【发布时间】:2012-12-06 02:10:14
【问题描述】:

可能重复:
$.ajax - dataType

我使用的是 jQuery 1.8.2,由于某种原因 'application/json' 不起作用,但 'json' 可以作为 dataType 使用标准的 jquery 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
        }
    });
});

【问题讨论】:

标签: javascript jquery json


【解决方案1】:

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

contentTypeapplication/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
    }
});

这里你正在发送 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
    }
});

你在这里发送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
    }
});

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

Accept:application/json, text/javascript, */*; q=0.01

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

【讨论】:

  • 我认为对此进行扩展并解释 $.ajax 在幕后做了什么以让服务器知道我们期望什么以及我们发送什么会很酷。
【解决方案2】:

"application/json" 是 json 的正确 mime 类型。但是,jquery dataType 字段需要以下字符串之一:

"xml"
"html"
"script"
"json"
"jsonp"

【讨论】:

    【解决方案3】:

    根据 json 文档,正确的数据类型是“json”。

    http://api.jquery.com/jQuery.ajax/

    以下是支持的选项:

    • xml
    • html
    • 脚本
    • json
    • jsonp
    • 文字

    【讨论】:

      猜你喜欢
      • 2018-07-16
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      • 2017-05-07
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      相关资源
      最近更新 更多