2016-03-30 2 views
1

У меня есть сценарий, который отправляет запрос AJAX на сервер, и если ответ будет просто текстовым, он поместит его в div, но если его json он будет обрабатывать разные.Как я могу получить ContentType запроса ajax в простом javascript?

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

Звучит странно. Конечная точка API должна иметь предсказуемый тип контента, либо/или, иногда не так, иногда. Обычно это выполняется _allways_, возвращающим структуру JSON, которая содержит другой тип полезной нагрузки, указанный свойствами внутри структуры. – arkascha

+0

Всегда возвращающ json будет работать, но я все еще хочу знать, можно ли это сделать. Потому что в противном случае мне пришлось бы переписать довольно некоторый код, который я не хочу. –

ответ

1

В Javascript вы можете можете использовать getResponseHeader ('Content-Type') метод, чтобы проверить тип содержимого возвращаемого ответа 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» в заголовке ответа

+0

это JQuery, но я попросил простой javascript, потому что я не хочу включать большие библиотеки, я почти не использую –

+0

ошибка с моей стороны .. будет опубликован другой ответ для того же –

+0

см. Отредактированный ответ ?? –

Смежные вопросы