Devo chiamare asincronamente una funzione del codebehind, passando anche degli argomenti, da un js client side.
Pensando a come posso raggiungere l'obbiettivo mi è venuto in mente che in altre pagine ho campi con l'autocompleteextender che fanno più o meno la stessa cosa: man mano che scrivo nel field mandano, via post ajax, i dati alla query di ricerca (contenuta in un webmethod) per comporre un tab di risultati.
Allotta sono andato a vedere e questa è la chiamata ajax alla funzione codebehind dell'autocomplete:
codice:
$(document).ready(function () {
$("#sceltamainloc").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "test.aspx/SearchCities",
data: JSON.stringify({ prefixText: request.term, count: 20 }),
dataType: "json",
success: function (output) {
response(output.d);
},
error: function (errormsg) {
alert(errormsg.responseText);
}
});
},
minLength: 4,
select: function (event, ui) {
$("#sceltamainloc").blur();
}
});
});
La mia funzione deve semplicemente fare un insert in un db di tre valori che le passo come argomenti e non deve restituire nessun risultato (al limite un boolean per sapere com'è andata)... provo quindi a inserire un pezzo del codice nel JS, così
codice:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "test.aspx/insertdata",
data: JSON.stringify({ arg1: 10, arg2: 20, arg3: 30 }),
dataType: "json",
success: function (output) {
response(output.d);
},
error: function (errormsg) {
alert(errormsg.responseText);
}
});
e...
funziona!
Mi sto dando dei pizzicotti perchè ancora non ci credo.
La domanda doveva essere "come si fa?" ma a questo punto chiedo "è corretto come l'ho fatto?"
Ho dovuto inserire uno scriptmanager per far girare la parte ajax e jquery (perchè l'autocomplete da cui ho sradicato il pezzo che mi interessava era figlio di JQueryUI)...
Di fatto ho capito solo a grandi linee il meccanismo (ad esempio, i due esiti della funzione success/error che vojono dì?) perciò tutti i commenti sul mio trionfo pomeridiano (che potete pure ascrivere alla categoria "il qlo del principiante") sono più che ben accolti.