【问题标题】:XMLHttpRequest Response Type & JSONXMLHttpRequest 响应类型和 JSON
【发布时间】:2015-12-05 02:07:37
【问题描述】:

我有一个简单的 PHP 脚本,它返回一个简单的 JSON 响应:

$data=array('a'=>'apple');
header('Content-Type: application/json');
print json_encode(array($date));

使用 JavaScript,我尝试读取数据:

var url='…';
var xhr=new XMLHttpRequest();
xhr.open('get', url, true);
xhr.send(null);
xhr.onreadystatechange=function() {
    if(this.readyState==4) {
        alert(this.responseText);
        alert(this.responseType);
    }
};

该代码大部分都有效,但我无法为 responseType 属性获取任何信息。我期待它是json,但任何事情都会有帮助。

我认为合适的 mime 类型可以胜任这项工作。我已经在 Firefox 和 Safari 中尝试过,它通常具有很好的支持。

我错过了什么?

【问题讨论】:

标签: javascript php json ajax xmlhttprequest


【解决方案1】:

responseType 不是服务器响应的 MIMEType。您可以在发送XMLHttpRequest 之前设置它,以便在响应到达时影响response 属性的类型。详情请参阅XMLHttpRequest Level 1 at W3C.org

您以this.getResponseHeader("Content-Type") 访问服务器响应的 MIMEType。

【讨论】:

    【解决方案2】:

    Content-type 标头仅用作应用程序的信息。这 浏览器不在乎它是什么。浏览器只是返回你的数据 来自 AJAX 调用。如果要将其解析为 JSON,则需要执行 自己动手。

    标头在那里,因此您的应用可以检测返回的数据以及 它应该如何处理它。您需要查看标题,如果是 application/json 然后将其解析为 JSON。

    这实际上是 jQuery 的工作方式。如果你不告诉它该怎么做 结果,它使用 Content-type 来检测要做什么 它。

    发现于HTTP Content-Type Header and JSON

    【讨论】:

      猜你喜欢
      • 2012-06-04
      • 2011-08-10
      • 2018-04-10
      • 2013-03-24
      • 2012-02-04
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      相关资源
      最近更新 更多