我有一个简单的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中找到