Ajax-Aufruf mit Javascript im Post-Inhalt (nicht eingereiht)

Ich würde gerne einen Ajax-Aufruf innerhalb eines JS machen, den ich nicht für die gesamte Website in die Warteschlange stellen möchte.

Um dies zu tun, lege ich das Skript direkt an das Ende des wp_enqueue_script() für den es relevant ist, anstatt wp_enqueue_script() hinzuzufügen.

Es funktioniert soweit, aber ich muss einen Ajax-Aufruf im Skript hinzufügen und das scheint nicht zu funktionieren, da ich nicht weiß, wie man den Befehl wp_localize_script() in diesem Kontext wp_localize_script() .

Das erwartete Ergebnis ist eine Warnung, die 1 anzeigt, wenn auf die Schaltfläche geklickt wird.

Der Beitrag ist:

  

Die js-Datei ist etwas wie:

 jQuery(document).ready(function($){ var s=1; $('button').on('click',function() { //wfire the ajax call jQuery.ajax({ url : postbutton.ajax_url, type : 'post', data : { //name of the function defined in the main plugin php file action : 'function', data : s }, success : function( response ) { alert(response); } }); }); }); 

Und das PHP ist das Folgende:

 add_action('wp_ajax_function','function); add_action( 'wp_enqueue_scripts', 'function_enqueue_scripts' ); function function_enqueue_scripts() { //I would not like to enqueue js script since I appended it directly in the post //wp_enqueue_script( 'ff', '../script.js', array('jquery'), '1.0', true ); wp_localize_script( 'ff', 'postbutton', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), )); }; function function() { $s=$_REQUEST['s']; return $s; } 

Solutions Collecting From Web of "Ajax-Aufruf mit Javascript im Post-Inhalt (nicht eingereiht)"

Wenn Sie das Skript inline hinzufügen, müssen Sie wp_localize_script nicht verwenden. Alles, was Sie tun müssen, ist direkt drucken Sie Ihr Inline-Skript genau so, wie Sie es brauchen.

Zum Beispiel in Ihrer Vorlage:

 < ?php // The PHP code of the template here ?>  < ?php // PHP code of the rest of the template ?> 

Jedenfalls machst du es falsch. Wenn Sie Inline-Skripte direkt drucken, können Sie nicht die performancesfähigkeit des WordPress-Abhängigkeiten-Managers nutzen, und Sie können viele Probleme haben. Wenn Sie beispielsweise entscheiden, jQuery in die Fußzeile zu verschieben, funktioniert Ihr Inline-JavaScript, das von jQuery abhängig ist, nicht mehr. Ein anderes Beispiel ist die Unmöglichkeit, das Skript zu lokalisieren, da es kein assoziatives Handle hat .

Also, wenn dein Skript von einem anderen abhängt, verwende IMMER den WordPress-Abhängigkeiten-Manager .

Und Sie können die Skripts nur in einzelnen Posts in die Warteschlange stellen, das ist kein Problem:

 add_action( 'wp_enqueue_scripts', 'function_enqueue_scripts' ); function function_enqueue_scripts() { if( is_singular( 'post' ) { // Enqueue my script that depends on jQuery // only in single post view wp_enqueue_script( 'my-script', get_template_directory_uri() . '/script.js', array('jquery'), '1.0', true ); } } 

Seit dem kommenden WordPress 4.5 können Inline-Skripte mit Abhängigkeiten mit der neuen function wp_add_inline_script() . Bis dahin, wiederhole ich, drucke niemals Skripte, die von einem anderen abhängen, oder du kannst die Abhängigkeiten, einschließlich der Lokalisierung, nicht verwalten.