2014-11-19 2 views
0

Drupal 8로 작업하고 Drupal 팀에서 구현 한 새로운 컨트롤러 시스템을 사용하여 서버에 ajax 호출을 시작했습니다.Jquery Ajax 호출은 JSON이 아닌 HTML에서 작동합니다.

경로를 정의하고 jquery를 사용하여 아약스 호출을하면 내 문제가 발생합니다. dataType을 "json"으로 설정하면 404가 수신되지만이를 "html"로 변경하면 작동합니다.

같은 외모에 함수 내 경로 점 :

function createResponse(){ 
    return new JsonResponse(['data' => 'test']); 
} 

내 응답/요청 헤더

는 다음과 같이 :

응답

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 내가 정의한 경로, 그것은 잘 작동하고 나는 dataType와 매우 이상한 느낌을 "HTML"뭔가를 변경하는 경우에도 작동합니다.

+0

dataType은 요청에 대해 아무 것도 변경하지 않으며, 결과를 처리하는 방법입니다. 당신은 아약스 기능을 보여줄 수 있습니까? 서버 측 오류가 발생하지 않습니까? – Spokey

+0

요청한 내용으로 원래 게시물을 업데이트했지만 json 대신 html로 dataType을 설정하면 올바른 응답을 얻습니다. 이것은 나를 드루팔 (Drupal이 무언가에 대해 화가났다는 사실을 깨닫게한다. – Undrium

+1

경로를 확인하거나 여기에 게시 할 수 있습니까? _controller 및 _format을 설정 했습니까? 나는 이것에 대해 어딘가 보았던 것을 기억합니다. 여기서 대답을 얻지 못하면 http://drupal.stackexchange.com/을 확인하십시오.이 문제는 어딘가에서 제기되었습니다. – Spokey

답변

1

내가 문제를 발견 한 의견에서 Spokey의 매우 중요한 단서 덕분에 내 경로가 Drupal에서 잘못 설정되었습니다. _controller 대신 _content를 사용했습니다. _controller는 많은 마크 업 오버 헤드를 추가하지 않고 즉시 함수에 액세스합니다.

그래서이 문제를 직접 해결하려면 routes.yml 파일에 _content 설정이 아닌 _controller 설정이 있어야합니다.

관련 문제