Я начал работать с Drupal 8 и совершать ajax-вызовы на сервер, используя новую систему контроллеров, реализованную командой Drupal.Jquery Ajax call работает с HTML, но не JSON
Проблема возникает, когда я определил маршрут, и я делаю вызов ajax с помощью jquery. Если я установил dataType на «json», я получаю 404, но смена его на «html» будет работать.
Функция мои точки маршрута, выглядит следующим образом:
function createResponse(){
return new JsonResponse(['data' => 'test']);
}
Мой ответ/запрос-заголовков выглядеть следующим образом:
Response
Cache-Control must-revalidate, no-cache, post-check=0, pre-check=0, private
Connection keep-alive
Content-Encoding gzip
Content-Language en
Content-Type application/json
Date Wed, 19 Nov 2014 12:20:35 GMT
Expires Sun, 19 Nov 1978 05:00:00 GMT
Keep-Alive timeout=10
Server nginx
Transfer-Encoding chunked
Vary Accept-Encoding
X-Powered-By PHP/5.5.18-1~dotdeb.1
X-UA-Compatible IE=edge,chrome=1
заголовка запроса
Accept application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Length 9
Content-Type application/json; charset=utf-8
Host d8test.local
Referer http://d8test.local/
User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0
X-Requested-With XMLHttpRequest
Является ли этот Drupal 8 конкретным? Есть ли какая-то глупая переменная, запрещающая json xmlhttprequests? Я могу нормально добраться до маршрута, путешествуя по маршруту, и я могу получить данные с помощью html, но мне это действительно нужно в json-формате.
Это код JQuery:
jQuery.ajax({
url: drupalSettings.path.basePath + "testAjax",
type: "post",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: {'type' : 'list'},
success: function(data){
console.log(data);
}
});
testAjax является маршрут я определил, это работает отлично, и это также будет работать, если изменить тип данных для «HTML» что-то, что чувствует себя очень странно.
dataType ничего не меняет для запроса, это как раз то, как он имеет дело с результатом. Вы можете показать функцию ajax? Вы уверены, что не получаете ошибку на стороне сервера? – Spokey
Я обновил свое оригинальное сообщение тем, что вы просили, однако я получаю правильный ответ, если я устанавливаю dataType в html вместо json. Это заставляет меня подозревать, что Друпал что-то расстроен. – Undrium
Вы можете проверить маршрут или разместить его здесь? Вы установили _controller и _format? Я помню, где-то видел это. Если вы не получите свой ответ здесь, вы можете проверить http://drupal.stackexchange.com/. Эта проблема возникла где-то там – Spokey