Perché il returnValue
da questa funzione è sempre uguale al valore predefinito impostato all'inizio della funzione e mai al valore recuperato dalla ricerca JSON?
risposta
Questo accade perché questa funzione di callback (function(data) {...}
) corre tardi quando la risposta torna ... perché è una funzione asincrona. Invece utilizzare il valore una volta che avete impostato, in questo modo:
function lookupRemote(searchTerm)
{
var defaultReturnValue = 1010;
var returnValue = defaultReturnValue;
$.getJSON(remote, function(data) {
if (data != null) {
$.each(data.items, function(i, item) {
returnValue = item.libraryOfCongressNumber;
});
}
OtherFunctionThatUsesTheValue(returnValue);
});
}
Questo è il modo in cui tutto il comportamento asincrono dovrebbe essere, dare il via ciò che deve il valore una volta che lo avete ... che è quando il server risponde con dati.
La funzione si passa a getJSON
viene eseguito quando la risposta alla richiesta HTTP arriva che è non immediatamente.
La dichiarazione di reso esegue prima della la risposta, quindi la variabile non è stata ancora impostata.
Fare in modo che la funzione di richiamata esegua ciò che è necessario fare con i dati. Non cercare di restituirlo.
Se non si desidera utilizzare la funzione asincrona, meglio utilizzare il seguente:
function getValue(){
var value= $.ajax({
url: 'http://www.abc.com',
async: false
}).responseText;
return value;
}
Questa funzione attende fino a quando il valore viene restituito dal server.
consiglia l'uso ** responseJSON ** .. grazie, funziona bene! – KingRider
- 1. Impossibile restituire un valore da una funzione
- 2. Come restituire un valore booleano da una funzione in MySQL?
- 3. Come restituire un percorso & da una funzione?
- 4. jQuery getJSON - Valore restituito alla funzione chiamante
- 5. Come posso restituire un valore recuperato da AJAX alla funzione genitore della funzione corrente in JavaScript?
- 6. Come restituire il valore booleano da una funzione in Swift
- 7. Come restituire il valore da una funzione di callback asincrona?
- 8. chiama dbstep da una funzione
- 9. Come restituire nullptr da una funzione lambda?
- 10. Come restituire classi diverse da una funzione?
- 11. Come restituire uno e un solo valore da una funzione di PowerShell?
- 12. Come restituire un valore da un'espressione lambda?
- 13. Come posso restituire un valore da una funzione in un file batch?
- 14. Come si chiama Start-Job che dipende da una funzione nello stesso modulo PowerShell della funzione che chiama Start-Job?
- 15. Come restituire un valore Enum da una stringa?
- 16. Esiste una versione di $ getJSON che non utilizza una richiamata?
- 17. Come restituire un valore booleano da una regex
- 18. jQuery + restituire una matrice da una funzione
- 19. Come restituire un risultato da una funzione VBA
- 20. Chiama una funzione GAS personalizzata dall'URL esterno
- 21. Devo restituire un array o una collezione da una funzione?
- 22. Chiama una funzione C++ da Swift
- 23. Chiama una funzione Oracle da Java
- 24. Come uscire da .each() e restituire un valore per una funzione
- 25. una funzione può restituire più di un valore?
- 26. Clojure: restituire un vettore da una funzione anonima
- 27. Come si chiama una funzione non gestita che ha un carattere [] come parametro OUT da C#?
- 28. Come posso restituire una stringa formattata da una funzione?
- 29. Come restituire un valore da __init__ in Python?
- 30. Chiama una funzione da un altro pacchetto in Go
Vedere http://stackoverflow.com/questions/3537434/cant-get-correct-return-value-from-an-jquery-ajax-call –
possibile duplicato di [Come restituire la risposta da una chiamata AJAX? ] (http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – Bergi