2017-01-08 11 views
3

私は現在、Drupal 8モジュールでAJAX(with jQuery)を使用して、ユーザーがテキストフィールドに何かを入力したときにページをリロードしようとしています。 私は完全なHTMLページを元に戻すことができましたが、AJAX関数はページ全体の内容を取得することはできません。Drupal 8 module - AJAXの使い方は?

どうすれば実現できますか?要求がAJAXを使用しているときに別のビューをレンダリングするために、コントローラの機能で何を変更する必要がありますか?

私はGoogleとDrupal 8のドキュメントで検索しましたが、私の質問に対する答えは見つかりませんでした。

ご協力いただきありがとうございます。

$.ajax({ 
    type: 'GET', 
    url: 'ajaxContent.php?action=get&pageId=777', 
    cache: false 
}).done(function(receivedHtml) { 
    $("#targetBlock").html(receivedHtml); 
}); 

それがURLを介してパラメータを持つajaxContentコントローラにjQueryのAJAXを使用した例です:

+0

が含まれていることを確認します。 php/group/ajax/8.2.x)?これはあなたがカスタムモジュールから出力したフォームの中にありますか? [Googleには大量の結果があります](https://www.google.com.au/?gws_rd=ssl#q=drupal+8+ajax) – 2pha

+0

テキストフィールド/フォームを生成するコードを掲載します。 – 2pha

+0

フォームはtwigテンプレート内にあり、Form APIを使用して生成されません。さらに、モジュールにナビゲーション機能を追加して、ページ全体をロードせずに前/次のページに移動することもできます。 – Dominique

答えて

1

以下のようにAJAXコールバック関数でデータを返すことができます。

$build[] = array(
    '#type' => 'markup', 
    '#markup' => '<p>Demo text content</p>', 
); 
return new Response(render($build)); 

すると、[DrupalのAjaxのAPI](https://api.drupal.org/api/drupal/core!core.apiを使用していレスポンスクラス

use \Symfony\Component\HttpFoundation\Response; 
-2

あなたがこの方法を追加しますか、あなたのページに再定義されますいくつかのajaxAction要求によって返されたいくつかのビューを作ることができます。

+1

あなたの答えはDrupalでそれを行う適切な方法ではなく、一般的なjquery ajaxです。 – 2pha

+0

あなたの問題は何か不明でした。あなたはこれを試しましたか? http://drupal.stackexchange.com/questions/144947/how-do-i-access-a-field-value-for-anentity-eg-node-object Thereレンダリングされたページのノードの内容を取得する方法を示す多くのリンクです。 – Daniel

+0

私の問題はjQueryに関連するのではなく、Drupal 8に関連しています。コントローラー関数を呼び出すと、ページのメインコンテンツ(テンプレートのコンテンツ)ウェブサイトの静的な部分(メニュー、ヘッダー、サイドバーなど)ではありません。 – Dominique