Come passare un parametro dati alla funzione handler dell'azione ajax

12 feb 2014, 23:05:37
Visualizzazioni: 63.8K
Voti: 9

Ho il seguente codice js per elaborare una richiesta ajax:

$('#someelement').click(function() {

        var cokeValue = 'coke';

        var data = {
            action: 'load_post',
            another_par: someVar
        };

        jQuery.post(ajax_object.ajax_url, data, function(response) {
            alert(response);
        });
  });

E questa è la mia funzione handler ajax (spero che la mia terminologia sia corretta):

add_action('wp_ajax_get_coke', 'get_coke_ajax');
function get_coke_ajax() {

   // necessario ottenere another_par qui !!!!!!!

   die();
}

Come potete vedere, l'azione è load_post che va bene, ma ho bisogno di passare il parametro another_par alla mia funzione ajax in modo da poter assegnare il suo valore a una variabile e utilizzarlo per i miei scopi.

0
Tutte le risposte alla domanda 1
1
15

Quando utilizzi jQuery.post(), i data vengono inviati come normali argomenti $_POST.

Quindi questo JavaScript …

var data = {
    action: 'load_post',
    foo:    'bar'
};

… è disponibile nella tua funzione di callback tramite:

$action = $_POST['action'];
$foo    = $_POST['foo']; // bar

E quando usi jQuery.get(), i dati sono in $_GET. Puoi anche usare $_REQUEST che restituisce sia i dati GET che POST (e COOKIE). Ma dovresti sempre richiedere la risorsa specifica per evitare iniezioni da fonti che non ti aspetti, come un cookie.

12 feb 2014 23:32:50
Commenti

Scusa, il mio WordPress esegue l'escape dell'input quando viene json_encoded. Vengono aggiunti alcuni backslash davanti ai caratteri ".

https://wpartisan.me/tutorials/wordpress-auto-adds-slashes-post-get-request-cookie

Jakob Alexander Eichler Jakob Alexander Eichler
21 lug 2018 03:41:56