2017-01-08 7 views
3

Ich versuche gerade, AJAX (mit jQuery) in meinem Drupal 8-Modul zu verwenden, um eine Seite neu zu laden, wenn der Benutzer etwas in ein Textfeld eingibt. Ich habe es geschafft, eine vollständige HTML-Seite zurück zu bekommen, aber ich möchte, dass die AJAX-Funktion nur den Inhalt der Seite bekommt (ohne das gesamte Layout).Drupal 8 Modul - Wie benutzt man AJAX?

Wie kann ich das erreichen? Was soll ich in meiner Controller-Funktion ändern, um eine andere Ansicht darzustellen, wenn die Anfrage AJAX verwendet?

Ich habe auf Google und auf der Drupal 8 Dokumentation gesucht, aber ich habe keine Antwort auf meine Frage gefunden.

Vielen Dank im Voraus für Ihre Hilfe!

+0

Sind Sie mit dem [Drupal Ajax-API] (https://api.drupal.org/api/drupal/core!core.api aufzunehmen. php/group/ajax/8.2.x)? Ist dies ein Formular, das Sie von einem benutzerdefinierten Modul ausgegeben haben? [Google hat eine enorme Menge an Ergebnissen] (https://www.google.com.au/?gws_rd=ssl#q=drupal+8+ajax) – 2pha

+0

Veröffentlichen Sie Ihren Code, der das Textfeld/Formular generiert. – 2pha

+0

Mein Formular befindet sich in einer Zweigvorlage und wird nicht mit der Formular-API generiert. Außerdem möchte ich meinem Modul eine Navigationsfunktion hinzufügen, die es dem Benutzer ermöglicht, zur vorherigen/nächsten Seite zu gehen, ohne die gesamte Seite laden zu müssen. – Dominique

Antwort

1

Sie können die Daten in der AJAX-Rückruffunktion wie folgt zurückgeben.

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

Achten Sie auf die Response-Klasse

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

können Sie einige Ansicht machen, die von einigen ajaxAction Anforderung zurückgegeben, die Sie anhängen wird oder auf Ihrer Seite auf diese Weise neu zu definieren:

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

Es ist Beispiel auf jQuery Ajax ajaxContent Controller mit Parametern durch url.

+1

Ihre Antwort ist nur generische jquery ajax, nicht die richtige Art, es in Drupal zu tun. – 2pha

+0

Es war unklar, worum es geht. Haben Sie dieses versucht: http://drupal.stackexchange.com/questions/144947/how-do-i-access-a-field-value-for-en-entity-eg-node-object Dort Es gibt viele Links, die zeigen, wie Knoteninhalte in der gerenderten Seite angezeigt werden. – Daniel

+0

Mein Problem bezieht sich nicht auf jQuery, sondern auf Drupal 8. Ich würde gerne einen Weg finden, wenn ich eine Controller-Funktion aufrufen würde, ** nur ** den Hauptinhalt der Seite (dh den Inhalt meiner Vorlagen) zurückzugeben. und nicht der statische Teil der Website (die Menüs, Kopfzeile, Seitenleiste, ...). – Dominique

Verwandte Themen