0

私は Drupal 8 を使い始め、Drupal チームによって実装された新しいコントローラー システムを使用して、サーバーへの ajax 呼び出しを行いました。

ルートを定義し、jquery を使用して ajax 呼び出しを行うと、問題が発生します。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」に変更しても機能しますが、これは非常に奇妙に感じます。

4

1 に答える 1