XMLHttpRequest响应类型& JSON

时间:2015-09-09 07:51:15

标签: javascript php json ajax xmlhttprequest

我有一个简单的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中也是如此。

我错过了什么?

2 个答案:

答案 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来检测如何处理   它

找到HTTP Content-Type Header and JSON