Manipulieren Sie die abgerufenen AJAX-Daten in PHP

Ich habe eine grundlegende Ajax-Anfrage an 2 Variablen gestellt. Ich möchte, dass die Werte im Backend gesendet und manipuliert werden, um sie in einer databaseabfrage zu verwenden. All das sollte beim Laden der Seite passieren. Mein main.js-Code:

main.js-Datei

var lat = 21.458965; var lng = -11.336985; jQuery.ajax({ type:"POST", url: ajaxurl, data: {'action':'func', 'lat':lat, 'lng':lng}, success:function(data){ // note that i don't want the data to return back to the front-end. }, error:function(errorThrown){ console.log(errorThrown); } }); } 

functionen.php

 wp_register_script( 'main', plugin_dir_url( __FILE__ ).'js/main.js', array( 'jquery' ) ); wp_enqueue_script( 'main' ); function func(){ if(isset($_REQUEST)){ //i tried to retrieve using $_POST and $_GET but the 2 arrays where empty. // i need to retrieve both vars and take them out of the function then use them in a db query. } } add_action('wp_ajax_func', 'func'); add_action('wp_ajax_nopriv_func', 'func'); 

Was ich hier wollte, ist, Daten (2 int-Variablen, um genau zu sein) von Javascript-Datei zu functions.php senden, so jede andere Möglichkeit, das zu tun, bitte erzähl mir davon.

Dazu habe ich ein Formular mit 2 versteckten Eingabeelementen erstellt, das JS verwendet, und dann mit $ (‘form’) abschicken. aber die Seite wurde zweimal geladen (das normale Laden der Seite und das erneute Laden der Datei).

Solutions Collecting From Web of "Manipulieren Sie die abgerufenen AJAX-Daten in PHP"

Ja, du solltest die(); Im Ajax-functionsaufruf, aber weil Sie keine Daten zurückgeben und sich nicht darum kümmern, was zurückgegeben wird, ist es nicht notwendig

Sie sollten Nonce verwenden, es ist eine gute Übung, sich daran zu gewöhnen, es immer zu verwenden, unabhängig von der Situation.

http://codex.wordpress.org/WordPress_Nonces http://codex.wordpress.org/AJAX_in_Plugins

Sie sollten nicht eine function namens func , nennen Sie es etwas, das für Ihre Einrichtung spezifisch ist, process_my_lat_lng

Um das Problem des zweimal übergebenen Formulars zu lösen, setzen Sie den Ajax-Aufruf in eine function und rufen Sie dann die function beim Laden der Seite auf:

 jQuery(document).ready(function($){ processMyLatLng(); }); function processMyLatLng() { var lat = 21.458965; var lng = -11.336985; jQuery.ajax( ajaxurl, { type: 'POST', data: { 'action': 'func', 'lat': lat, 'lng': lng }, success: function(data) { // note that i don't want the data to return back to the front-end. }, error: function(errorThrown) { console.log(errorThrown); } }); } 

Wenn Formular- (oder andere) Daten über AJAX übermittelt werden, kann auf sie über die Variablen $_POST oder $_GET werden, abhängig von der verwendeten Methode. In Ihrem Fall verwenden Sie die Post-Methode, so dass Sie mit $_POST['lat'] und $_POST['lng'] auf Ihre ‘lat’ und ‘ $_POST['lat'] $_POST['lng'] und sie nach Bedarf manipulieren können.