Home › Forum › Plugin e temi di WP › invio dati a funzione con ajax
-
AutorePost
-
-
24 Febbraio 2014 alle 21:35 #26720kkasugaPartecipante
sto tentando invano di capire come inviare dei dati ad una funzione sfruttando ajax…purtroppo non ne vengo fuori! lo sto utilizzando in un plugin ed il form dovrà essere nel front end per essere utilizzato da utenti loggati e non. questo è il mio codice:
jQuery('#demo_ajax').submit(function(){
var data = jQuery("#data").val();
$.ajax({
data: data,
type: 'post',
url: "<?php echo admin_url('admin-ajax.php'); ?>?action=demo_ajax",
});
return false;
});html:
<form action="" id="demo_ajax" method="POST">
<input type="text" name="data" placeholder="Data" id="data">
<input type="submit" value="Go">
</form>functions.php:
add_action( 'wp_ajax_demo_ajax', 'demo_ajax' );
function demo_ajax() {
echo '<script>alert("' . $_POST["data"] . '"</script>';
die();
}mi sono perso qualcosa?
-
25 Febbraio 2014 alle 7:19 #110029SteveAglAmministratore del forum
SI che non si capisce quale sia il problema, se speri di vedere l’alert sbagli i dati (DATA) vengono si inviati a WP ma ad un’altra istanza… e nelal funzione iniziale che sul success ricevi il risultato e poi lo manipoli.
http://codex.wordpress.org/AJAX_in_Plugins
chi riceve la richiesta ajax non è l’sitanza di WP che vedi ma un’altra… devi chiarirti le idee mi sa.
-
25 Febbraio 2014 alle 19:48 #110055kkasugaPartecipante
ciao e grazie per la risposta…guarda, avrò letto quella pagina almeno 10 volte e ti giuro che non riesco a capire come fare! potresti gentilmente farmi un esempio pratico? se non è chiedere troppo…
l’alert era solo per verificare che la variabile venisse passata…ci potevo mettere un echo o un printf…in realtà ciò che dovrò poi fare sarà passare la variabile ad una query di inserimento…
-
26 Febbraio 2014 alle 8:16 #110062SteveAglAmministratore del forum
l’echo che fai NON lo vedi perchè è un’altro WP ad eseguirlo e nella funzione chiamante ajax che devi mettere la response e li fare l’alert che ti serve… come da esempi su quella pagina.
-
26 Febbraio 2014 alle 8:44 #110064kkasugaPartecipante
ho copiato il codice dalla pagina in questione e modificato cosà¬:
jQuery('#demo_ajax').submit(function(){
var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>?action=demo_ajax";
var data = {
action: 'demo_ajax',
whatever: 1234
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
$.post(ajaxurl, data, function(response) {
alert('Got this from the server: ' + response);
});
return false;
});
ho assegnato il valore di ‘ajaxurl’ manualmente, come da istruzioni su quella pagina, dato che non mi trovo nel backend ma nel frontend.
chiamo l’add action con wp_ajax_no_priv_(action), proprio come da istruzioni su quella pagina, sempre dato che mi trovo nel frontend e non nel backend.
il risultato? la pagina viene ricaricata nonostante il “return false;” e non viene creato alcun alert……….
-
26 Febbraio 2014 alle 14:15 #110074SteveAglAmministratore del forum
Questa che era originariamente
jQuery(‘#demo_ajax’).submit(function(){
var data = jQuery(“#data”).val();
$.ajax({
data: data,
type: ‘post’,
url: “<?php echo admin_url(‘admin-ajax.php’); ?>?action=demo_ajax”,
});
return false;
});
Diventa:
jQuery(‘#demo_ajax’).submit(function($){
var data = jQuery(“#data”).val();
$.ajax({
data: data,
type: ‘post’,
url: “<?php echo admin_url(‘admin-ajax.php’); ?>?action=demo_ajax”,
.done(function( msg ) {
alert( msg );
});
});
return false;
});
Il che nonr iguarda WP ma la funzione jquery ajax che è documentata qua:
https://api.jquery.com/jQuery.ajax/
Inoltre WP usa jquery non in compatibility mode quindi se vuoi usare il $ lo devi mettere nella funziona chiamata da jQuery come ben indicato negli esempi della pagina linakata prima del cosdex, insomam NON è un problema di WP ma di conoscere ajax e jquery
-
27 Febbraio 2014 alle 14:39 #110111kkasugaPartecipante
Ho letto la pagina da te linkata…ora, posto che NON HO MAI LAVORATO PRIMA CON AJAX, se hai realmente intenzione di aiutarmi e non di sottolineare la mia ignoranza al riguardo, posto che ti ho più volte detto che ho letto la documentazione a riguardo senza capirla, non sarebbe più facile e più veloce se mi facessi un esempio pratico di script funzionante?
Per la compatibility mode è stato un mio errore banale, l’ho già usata in altri script jQuery e conosco il suo funzionamento…mi sono solo scordato di passarla alla funzione. Ad ogni modo non era quello il problema principale a quanto pare visto che utilizzando comunque la tua sintassi il risultato non cambia: niente alert e pagina refreshata…
-
27 Febbraio 2014 alle 15:11 #110119SteveAglAmministratore del forum
COme l’ho modificato io devi vedere l’alert punto… se non non lo avrei scritto, ma mi sa che il codice manco lo hai guardato. Ovviamente la funzione chiamante lha il die vero?
La pagina fa il refresh ovviamente perchè c’è un errore nel javascript che aprendo la console di FF o chrome avresti dovuto vedere e quindi prosegue col submit normale…
Tralascio la tua parte polemica se no chiuderei il thread e addio!!
-
27 Febbraio 2014 alle 15:19 #110120SteveAglAmministratore del forum
http://www.html.it/pag/18403/jquery-ajax/ in italiano
PS il paramentro data aspetta sempre una coppia chiave valore o uan stringa come per i paramentri passati in GET “valore=pippo&valore2=pluto”
IL manuale di jQuery linkato sopra lo hai guardato? direi di no…
-
27 Febbraio 2014 alle 15:33 #110122SteveAglAmministratore del forum
qui un esempio completo e funzionante che venga eseguito sul document ready invece che sul submit non cambia è solo l’evento che o lancia che nulal a che fare con ajax o WP m
-
28 Febbraio 2014 alle 13:04 #110143kkasugaPartecipante
COme l’ho modificato io devi vedere l’alert punto… se non non lo avrei scritto, ma mi sa che il codice manco lo hai guardato.
Non è cosà¬, e il tuo codice l’ho copiato ed incollato pari pari
Ovviamente la funzione chiamante lha il die vero?
La funzione chiamata semmai, ed il die come puoi vedere dal mio primo post c’è…ma a sto punto mi sa che sei tu che non guardi bene…
La pagina fa il refresh ovviamente perchè c’è un errore nel javascript che aprendo la console di FF o chrome avresti dovuto vedere e quindi prosegue col submit normale…
Posto che purtroppo non ho grande esperienza con il debug di javascript e jquery e di conseguenza non ho aperto la console, non l’hai aperta nemmeno tu dato che il codice che non funziona è preso pari pari dal tuo come detto poc’anzi
Tralascio la tua parte polemica se no chiuderei il thread e addio!!
Polemica? Ti ho solo fatto notare il tuo atteggiamento…non mi sembrava una polemica. Ti ha dato fastidio?
http://www.html.it/pag/18403/jquery-ajax/ in italiano
PS il paramentro data aspetta sempre una coppia chiave valore o uan stringa come per i paramentri passati in GET “valore=pippo&valore2=pluto”
IL manuale di jQuery linkato sopra lo hai guardato? direi di no…
qui un esempio completo e funzionante che venga eseguito sul document ready invece che sul submit non cambia è solo l’evento che o lancia che nulal a che fare con ajax o WP m
Mi sembrava di aver già scritto che quei manuali li ho letti e riletti non riuscendo a metterli in pratica. O metti in dubbio ciò che affermo?
Infine il codice in questi esempi non è quello che andrebbe usato in WordPress dato che WordPress ha il suo modo di eseguire gli script (vedi ad es il compatibility mode). O credi che non abbia già provato a seguire i manuali Ajax per utilizzo su siti normali cercando di adattare gli script in WordPress?
Detto ciò, visto che continuo a notare una tua marcata strafottenza nello scrivere i messaggi, se vuoi DAVVERO aiutarmi, mi fai un esempio di codice FUNZIONANTE che io possa studiarmi e modificarmi per cercare di capire almeno in questo modo come far funzionare Ajax in WordPress, altrimenti se devi continuare a tirarmi frecciatine o postarmi briciole di link (per altro non attinenti a WordPress) ti ringrazio per il tempo che hai speso in questo thread, mi tengo (per ora) la mia ignoranza e chiederò altrove aiuto…
-
28 Febbraio 2014 alle 13:53 #110145SteveAglAmministratore del forum
A) Io ho editato i codice tuoi senza fare test se mancavano parentesi o altro non so non mi metto certo a mettere su un ambiente di test solo per te scusa!
Prima mi dici che tu jQuery etc lo conosci e poi non hai esperienza, se nona pri manco la console io che ci posso fare?
C) I manuali di jQuery sono perfettamente atti a sviluppare per WP ajax è ajax WP non usa cose strane il compatibility mode è uan cosa di jQuery e NON dipende da WP ma lo ritrovi inq ualsiasi ambiente ove oltre a jQuery puoi avere altre librerie che usano $ coem abbreviazione, si risolve banalmente sostituendo a $ jQuery. La “particolarità ” di ajax in WP NON è nel lato che chiama ajax ma nel lato che risponde che ha le sue action da registrare l’output deve terminare con die() e cose cosà¬, dal lato chiamante NON vi sono particolarità se non ad esempio la variabile ajaxurl ma solo quando si è in admin.
D) Continui a NON leggere nulla l’ultimo link postato E’ UN ESEMPIO FUNZIONANTE ED E’ FATTO SU WORDPRESS – http://wptheming.com/2013/07/simple-ajax-example/
Ma siccome non leggi e vuoi fare solo polemica le risposte le hai avute un esempio FUINZIONANTE di ajax in WP lo hai avuto se non ahi voglia di impegnarti e vuoi la pappa pronta si ecco chiedi altrove. Addio
Trhead chiuso!
-
-
AutorePost
- Devi essere connesso per rispondere a questo topic.