XMLHttpRequest响应类型&JSON


XMLHttpRequest Response Type & JSON

我有一个简单的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中都试过了,前者的支持通常都很好。

我错过了什么?

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

访问服务器响应的mime类型为this.getResponseHeader("Content-Type")

Content-type头只是用作应用程序的信息。的浏览器不关心它是什么。浏览器只返回数据从AJAX调用。如果要将其解析为JSON,则需要这样做那是你自己的事。

头在那里,所以你的应用程序可以检测返回的数据和它应该如何处理它。你需要看一下标题,如果它然后解析为json。

这就是jQuery的工作原理。如果你不告诉它该怎么做对于结果,它使用content类型来检测要做什么它。

可在HTTP Content-Type Header和JSON中找到