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

时间:2016-03-30 09:09:00

标签: javascript php json ajax

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

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
        document.body.innerHTML = xhttp.responseText;
    }
};
xhttp.open(method, "/controller.php?url=" + location, true);
xhttp.send(data);

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

1 个答案:

答案 0 :(得分:1)

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

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
        if(this.getResponseHeader('content-type') == 'application/json'){
             //do something with the json
        }
        else{
             document.body.innerHTML = xhttp.responseText;
        }
    }
};
xhttp.open(method, "/controller.php?url=" + location, true);
xhttp.send(data);

在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'存在于响应头