2016-07-09 17 views
1

Ich versuche, HTML und Javascript, die in PHP generiert wird, in ein Div auf der Seite einzufügen.Php echo Inhalt in div

a.php Datei:

function get_preset() { 
    return (bunch of html, javascript); 
} 

b.php:

<div id="preset_preview"> 
    //<?php echo get_preset(); ?> //this works well, but I need to execute this every time I click a button in jquery. 
</div> 

ich Ajax verwenden können zwischen meinem Jquery und a.php erfolgreich zu kommunizieren, aber wie stelle ich zurück Inhalte aus get_preset Funktionsaufruf in PHP in preset_preview div?

Gibt es eine Möglichkeit, dies zu tun ohne Senden von Daten mit Ajax von get_preset Funktionsaufruf in jquery, dann verwenden Sie jquery, um dies in preset_preview div?

Kann PHP irgendwie tun es jedes Mal auf Anfrage von jQuery so?

So verwende ich jQuery ajax php nennen dies auszuführen:

<div id="preset_preview"> 
    <?php echo get_preset(); ?> 
</div> 

Was mir ist verwirrend ist, dass PHP es erfolgreich tun können (wie zB oben zeigt) ohne erste Daten mit Ajax zu jquery senden.

+2

Klingt so, als müssten Sie den Unterschied zwischen clientseitigen und serverseitigen Skripten kennen lernen, um zu beantworten, was immer Sie gerade fragen. – PeeHaa

+0

Sie können a.php-Datei in b.php-Datei einschließen und rufen Sie dann 'get_preset()' in Ihrer b.php-Datei, und wenn Sie Daten benötigen, rufen Sie ajax b.php –

+0

Bitte versuchen Sie zu erklären, was Sie eigentlich tun möchten mit diesem Code. Wie wird zum Beispiel das JS und HTML tun. Damit können wir mehr helfen. –

Antwort

1

a.php Datei

function get_preset() { 
    return (bunch of html, javascript); 
} 

echo get_preset(); 

b.php Datei

<button type="button" id="preview">Preview Preset</button> 
<div id="preset_preview"> 
    <?php include "a.php"; ?> 
</div> 

<script> 
    $('#preview').on('click', function(e) { 
     e.preventDefault(); 
     $("#preset_preview").load('a.php'); 
    }); 
</script> 

Es gibt mehrere Methoden von jQuery AJAX sind, die Sie tatsächlich nutzen können. Beispiel oben verwendet load(), die Ihre Anfrage mit get-Methode umschließt (Sie können ihre Anfrage-Methode durch den Aufruf von ajaxSetup() anyways) auf die relative URL von a.php umschreiben.

Sie können a.php echo ing (string of?) Sehen get_preset() Funktion, die innerhalb <div id="preset_preview"> in b.php Datei dann platziert werden.


Um die Bedürfnisse der AJAX in diesem Fall zu erweitern, weil PHP tut nur so etwas wie

  1. eine Anfrage bekommen, egal, was die Methode (get, Post, put, etc)
  2. Gibt eine Antwort zurück. Normalerweise, nachdem Sie eine Logik in Bezug auf den Anforderungswert durchgeführt haben.

Es stirbt, wenn Ihr erwartet Reaktion auf Client-Seite gerendert. Du kannst nichts Zauberei hinter der Wand machen, direkt nachdem die Antwort zurückgegeben wurde. Mit anderen Worten, eine Seitenladung wird benötigt.

Und dann kommt AJAX, um Ihnen zu helfen, eine andere Anfrage an die entsprechende PHP-Datei zu erstellen. Es belebt eine PHP-Datei, um (eine andere) Anfrage zu machen -> mach etwas Logik -> dann gib es zurück. Still, ohne Seitenladung.

Und in Antwort des Kommentars - Kann dies mit Funktionsaufrufen irgendwie ohne die eigentliche PHP-Datei in Preset_preview getan werden?

Es ist alles ja. Solange Sie bedienen, was der Anrufer braucht.

a.php Datei

function get_preset() { 
    return (bunch of html, javascript); 
} 

echo get_preset(); 

Die a.php ist einfach echoget_preset() ing.

b.php

<button type="button" id="preview">Preview Preset</button> 
<div id="preset_preview"></div> 

<script> 
    $('#preview').on('click', function(e) { 
     e.preventDefault(); 
     $("#preset_preview").load('a.php'); 
    }); 
</script> 

Die b.php Datei einfach macht einen Anforderungsdatei a.php. Immer wenn die Schaltfläche mit der Selektor-ID #preview angeklickt wird, wird der Inhalt der a.php auf #preset_preview geladen.

Sie können den Inhalt der a.php auch direkt nach der Fertigstellung der Seite rendern. Dies ist ein ähnlicher Ansatz wie mein erster Abschnitt, wie oben beschrieben.

<script> 
    $(document).ready(function() { 
     $('#preset_preview').load('a.php'); 
    }); 

    $('#preview').on('click', function(e) { 
     e.preventDefault(); 
     $("#preset_preview").load('a.php'); 
    }); 
</script> 

Es sagt Ihnen einfach, dass Sie direkt nach der b.php Seite laden a.php sollte, ist bereit und „reload“ es einmal auf die Schaltfläche geklickt.

+0

Ja, get_preset echos string. Also wird der Inhalt von a.php in einer b.php nicht sichtbar sein, bis load ('a.php') aufgerufen wird? – Toniq

+0

Eigentlich nein, seit ' '. Aber Sie können einen ähnlichen Ansatz machen, indem Sie beim Laden der Seite oder mit '$ (document) .ready()' lauschen, was dann bedeutet, dass Sie die Methode 'load()' zweimal schreiben sollten. – Chay22

+0

Aber ich muss nur a.php auf meine Anfrage (oder nur den String-Inhalt von get_preset Funktionsaufruf), nicht wie im obigen Beispiel. Nicht sicher, was der Punkt der Last oben ist, da a.php sofort enthalten ist. Das ist genau meine Frage, aber ich weiß nicht, wie ich es ausführen soll. – Toniq