Ciao a tutti.
ho inserito con successo una form custom in chronoform, con avvio di JS gestito al suo interno.
JqueryUI è gestito da un'estensione di joomla che me lo carica felicemente in tutto il sito.
ho a che fare con una form con richiesta di paesi e provincie, AUTOCOMPLETATA, che volevo far funzionare tale e quale agli esempi presenti sul sito della wiki di jqueryUI autocomplete .
l'input si chiama #locations .
SE io, nel javascript della form, inserisco il codice che cerca i dati "localmente", direttamente in un array, la cosa funziona perfetta:
$(function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
$( "#locations" ).autocomplete({
source: availableTags
});
});
va da dio... scrivo "py" e mi esce Python sotto da scegliere, scrivo "ja" e mi esce Java e Javascript.....
MA
purtroppo il DB di paesi e province è grossino, non posso scriverlo tutto nel codice.
quindi ho scritto un bel PHP che mi raccoglie i dati da MySql, chiedendo all'utente 2 parametri (per futuri ampliamenti):
parametro [a] = "src"
parametro [term] = "il termine da cercare".
L'ho provato e funziona, e alla fine gli dico:
// json_encode for return data
$locationsjson = json_encode($locations);
return ($locationsjson);
$locationsjson mi contiene tutti i dati che voglio parsare, ovviamente sotto forma di oggetto JSON.
il Javascript che voglio far funzionare, quindi, è questo: in rosso la parte che secondo me non quadra. NON mi da nessun errore, MA l'autocomplete non esce fuori con nessun valore.
$(function(){
//funzione per dividere ogni valore cercato
function split( val ) {
return val.split( /,\s*/ );
}
//funzione per estrarre ogni valore partendo dall'ultimo
function extractLast( term ) {
return split( term ).pop();
}
$( "#locations" ).autocomplete({
source: function( request, response ) {
$.getJSON( "api/src.php", {
a : "src",term: request.term
},
response );
},
search: function() {
// se si scrivono solo 2 caratteri non cerca niente
var term = this.value;
if ( term.length < 1 ) {return false;}
}
});
});
Non avendo mai toccato JSON prima d'ora, non ho idea del perchè non gestisca il response, al contrario dell'esempio sulla wiki di jquery che con lo stesso codice fa faville.
Potete darmi una mano?
grazie in anticipo...