我有一个简单的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
,但任何事情都会有所帮助。
我认为合适的哑剧类型可以胜任。我已经在Firefox中尝试过它,它通常非常好,并且在Safari中也是如此。
我错过了什么?
答案 0 :(得分:1)
responseType
不是服务器响应的MIMEType。您可以在发送XMLHttpRequest
之前进行设置,以便在响应到达时影响response
属性的类型。有关详细信息,请参阅XMLHttpRequest Level 1 at W3C.org。
您可以将服务器响应的MIMEType作为this.getResponseHeader("Content-Type")
访问。
答案 1 :(得分:0)
Content-type标头仅用作应用程序的信息。该 浏览器并不关心它是什么。浏览器只返回数据 来自AJAX的电话。如果要将其解析为JSON,则需要执行此操作 那是你自己的。
标题就在那里,以便您的应用可以检测返回的数据和 它应该如何处理它。您需要查看标题,如果是的话 application / json然后将其解析为JSON。
这实际上就是jQuery的工作原理。如果你不告诉它该怎么做 结果,它使用Content-type来检测如何处理 它