【问题标题】:What is the point of jQuery ajax accepts attrib? Does it actually do anything?jQuery ajax 接受属性有什么意义?它真的有什么作用吗?
【发布时间】:2012-06-16 16:40:57
【问题描述】:

花了整整一个小时试图弄清楚为什么会这样(咖啡脚本)

$.ajax
  accepts: "application/json; charset=utf-8"

完全没有改变接受头,而这

$.ajax
  dataType: "json"

将接受标头正确设置为application/json; charset=utf-8

完全糊涂了,是我遗漏了什么,还是接受属性是全年愚人节的玩笑?

【问题讨论】:

    标签: jquery types header set response


    【解决方案1】:

    一如既往,documentation 是您的朋友:

    接受

    默认值:取决于数据类型

    发送的内容类型 请求标头告诉服务器它将做出什么样的响应 接受作为回报。如果接受设置需要修改,则为 建议在 $.ajaxSetup() 方法中这样做一次。

    数据类型

    默认:智能猜测(xml、json、脚本或 html)

    您期望从服务器返回的数据类型。如果没有 指定,jQuery 将尝试根据 MIME 类型推断它 响应(XML MIME 类型将产生 XML,在 1.4 JSON 将产生 一个 JavaScript 对象,在 1.4 中的脚本将执行该脚本,并且 其他任何内容都将作为字符串返回)。可用的类型(和 作为第一个参数传递给成功回调的结果)是:

    xml”:返回一个可以通过jQuery处理的XML文档。

    "html":以纯文本形式返回 HTML;评估包含的脚本标签 插入 DOM 时。

    "script":将响应评估为 JavaScript 并将其作为纯文本返回。通过附加禁用缓存 URL 的查询字符串参数_=[TIMESTAMP],除非缓存 选项设置为真。注意:这会将 POST 转换为 GET 远程域请求。

    "json":将响应评估为 JSON 和 返回一个 JavaScript 对象。在 jQuery 1.4 中,JSON 数据被解析为 严谨的态度;任何格式错误的 JSON 都会被拒绝,并且会出现解析错误 抛出。 (有关正确的 JSON 格式的更多信息,请参阅 json.org。)

    "jsonp":使用 JSONP 加载到 JSON 块中。添加一个额外的 ?callback=? 到 URL 的末尾以指定回调。禁用 通过将查询字符串参数
    _=[TIMESTAMP] 附加到 URL,除非缓存选项设置为 true。

    "text":纯文本 细绳。多个空格分隔的值:从 jQuery 1.5 开始,jQuery 可以 将 dataType 从它在 Content-Type 标头中收到的内容转换为 你需要什么。例如,如果您希望文本响应是 视为 XML,请使用“text xml”作为数据类型。你也可以做一个 JSONP 请求,将其作为文本接收,并由 jQuery 解释为 XML:“jsonp 文本 xml。”类似地,诸如“jsonp”之类的速记字符串 xml" 将首先尝试从 jsonp 转换为 xml,并且失败 即,从 jsonp 转换为 text,然后从 text 转换为 xml。

    现在回到你的问题。我不熟悉 cofeescript 但与 dataType 是一个字符串相反,accepts 参数是一个映射,应该这样使用:

    $.ajax({
        url: ...
        dataType: 'json',
        accepts: {
            xml: 'text/xml',
            text: 'text/plain'
        }
    });
    

    【讨论】:

    • +1,同意重新:文档;但是,提供一个以您尝试更改的标头命名的属性是完全不直观的,实际上,它是相对于总线的真正驱动程序 dataType 的二等公民。只是设置 dataType 和 accept 似乎实际上会导致默认响应标头令人困惑。无论如何,很高兴发现仅数据类型就可以完成这项工作......
    • 我必须同意 virtualeyes,而不是直观的名称。而且这个文档就像是一个很难快速理解的朋友:)...另外,类型声明链接'Map'指向api.jquery.com/Types/#Map,这似乎描述了一个数据参数。没有示例代码。而“默认:取决于 DataType”是轻描淡写,不是吗:它 总是 取决于 'dataType',它给出了类型的顺序,对吗? ...理想情况下,文档应该更像一个可以立即理解的陌生人。我知道,这当然很难实现。
    • 如果既没有指定dataType 也没有指定accepts,会发送什么HTTP Accepts 标头?没有?
    猜你喜欢
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 2021-12-26
    • 2017-05-30
    • 2013-08-07
    • 1970-01-01
    • 2016-09-16
    • 2010-09-23
    相关资源
    最近更新 更多