如何在纯javascript中获取ajax请求的ContentType?

如何在纯javascript中获取ajax请求的ContentType?,javascript,php,json,ajax,Javascript,Php,Json,Ajax,我有一个脚本,它向服务器发送一个AJAX请求,如果答案只是文本,它将把它放在div中,但是如果是json,它应该处理它 var xhttp=new-XMLHttpRequest(); xhttp.onreadystatechange=函数(){ 如果(xhttp.readyState==4&&xhttp.status==200){ document.body.innerHTML=xhttp.responseText; } }; open(方法“/controller.php?url=“+loca

我有一个脚本,它向服务器发送一个AJAX请求,如果答案只是文本,它将把它放在div中,但是如果是json,它应该处理它

var xhttp=new-XMLHttpRequest();
xhttp.onreadystatechange=函数(){
如果(xhttp.readyState==4&&xhttp.status==200){
document.body.innerHTML=xhttp.responseText;
}
};
open(方法“/controller.php?url=“+location,true”);
发送(数据);

现在如何检查
xhttp.responeText
是否为json?

在Javascript中,您可以使用getResponseHeader('content-type')方法检查返回的json响应的内容类型

var xhttp=new-XMLHttpRequest();
xhttp.onreadystatechange=函数(){
如果(xhttp.readyState==4&&xhttp.status==200){
if(this.getResponseHeader('content-type')=='application/json'){
//对json做些什么
}
否则{
document.body.innerHTML=xhttp.responseText;
}
}
};
open(方法“/controller.php?url=“+location,true”);
发送(数据);
在Jquery中,您可以尝试这样的方法

$.ajax({
  type: "POST",
  url: "www.yourURL.com", 
  data: "data which you want to sent to server", 
  success: function(response, status, xhr){ 
    var ct = xhr.getResponseHeader("content-type") || "";
    if (ct.indexOf('text') > -1) {
      //do something
    }
    if (ct.indexOf('json') > -1) {
      // handle json here
    } 
  }
});

基本上,它会检查响应头中是否存在字符串“html”或“json”

这听起来很奇怪。API端点应该有一个可预测的内容类型,不是这个,也不是那个。通常,这是通过始终返回一个JSON结构来完成的,该结构包含由结构中的属性指示的不同负载类型。始终返回JSON会起作用,但我仍然想知道是否有可能做到这一点。因为否则我将不得不重写相当多的代码,这是我不想要的。这是JQuery,但我要求使用纯javascript,因为我不想包括我几乎没有使用过的大型库。我会发布另一个同样的答案