650 messaggi dal 21 marzo 2008
Ciao a tutti
è possibile scrivere una funzione con jquery che ti restituisca un valore?
Quello che voglio fare è questo:
var pippo = <funzione che mi restituisce una stringa>

Ho provato in questo modo:
var allegati_caricati = null;
PageMethods.ajaxAllegatiCaricati(id,
function (result, userContext, methodName) {
allegati_caricati = result;
},
function (error, userContext, methodName) { }
);

mi dice che allegati_caricati è null.
Grazie
5.610 messaggi dal 09 febbraio 2002
Contributi
Gemini78 ha scritto:
mi dice che allegati_caricati è null.


Ciao,
in quale momento leggi la variabile "allegati_caricati"? E' possibile che tu la legga quando ancora vale null, ovvero prima che la chiamata al page method "ajaxAllegatiCaricati" si sia conclusa?

Verifica inoltre che la funzione non produca un errore, altrimenti l'assegnazione allegati_caricati = result; non verrà eseguita. Puoi verificarlo banalmente mettendo degli alert nelle due funzioni di callback.

var allegati_caricati = null;
PageMethods.ajaxAllegatiCaricati(id,
function (result, userContext, methodName) {
allegati_caricati = result;
alert("la variabile vale: " + allegati_caricati);
},
function (error, userContext, methodName) {
alert("Si è verificato un errore");
}
);


Metti un alert anche in corrispondenza della linea di codice che usi per leggere il valore di allegati_caricati. Così ti rendi conto se va in esecuzione prima che la richiesta a "ajaxAllegatiCaricati" si sia conclusa.

(tieni presente, comunque, che esiste un metodo migliore degli alert per debuggare queste situazioni, ed è usando Firebug o altro tool simile. Vedi qui)

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
650 messaggi dal 21 marzo 2008
Ciao
il problema era l'aver assegnato allegati_caricati = null
Ho notato una cosa: il codice javascript non attende che la funzione richiamata con PageMethods termini, ma va all'istruzione successiva. Così mi ritrovo che allegati_caricati è vuota.
Non c'è un modo per far attendere?
Grazie
5.610 messaggi dal 09 febbraio 2002
Contributi
Gemini78 ha scritto:
Non c'è un modo per far attendere?


ciao, per sua natura la chiamata ajax è asincrona quindi... no, non puoi far attendere il termine dell'esecuzione.
Poco male, puoi sempre inserire il codice che legge allegati_caricati all'interno della funzione di callback, come ti dicevo ieri.

Posto solo il frammento interessante:

function (result, userContext, methodName) {
//qui leggi "result" e compi le opportune operazioni
//presumo che tu voglia manipolare l'html in base al contenuto di result.
//Può darsi che tu non abbia neanche bisogno di una variabile allegati_caricati
//Usa direttamente "result".
}

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
650 messaggi dal 21 marzo 2008
Grazie
in questo caso ho fatto così
Gemini78 wrote:
mi dice che allegati_caricati è null.

se è async non puoi restituire niente. in questo caso, in genere si usa un callback (una funzione) a cui notificare la fine dell'esecuzione. .

Daniele Bochicchio | ASPItalia.com
I libri su HTML5, WP7, ASP.NET, VB, C#, Entity Framework
Senior Software Architect@5DLabs.it
Microsoft Regional Director for Italy
Daniele Bochicchio [Staff] wrote:
se è async non puoi restituire niente. in questo caso, in genere si usa un callback (una funzione) a cui notificare la fine dell'esecuzione. .

ops, via NNTP non avevo visto che c'erano già risposte. sorry  .

Daniele Bochicchio | ASPItalia.com
I libri su HTML5, WP7, ASP.NET, VB, C#, Entity Framework
Senior Software Architect@5DLabs.it
Microsoft Regional Director for Italy

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC