Warum ist die returnValue
von dieser Funktion immer gleich dem Standardwert am Anfang der Funktion und nie auf den Wert aus der JSON-Suche abgerufen?
Antwort
Das passiert, weil diese Callback-Funktion (function(data) {...}
) später ausgeführt wird, wenn die Antwort zurückkommt ... weil es eine asynchrone Funktion ist. Anstatt den Wert benutzen, wenn Sie es eingestellt haben, wie folgt aus:
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);
});
}
Dies ist die Art und Weise alle asynchrones Verhalten sollte sein, kick off, was den Wert braucht, wenn Sie es haben ... was ist, wenn der Server mit antwortet Daten.
Die Funktion, die Sie getJSON
passieren wird ausgeführt werden, wenn die Antwort auf die HTTP-Anforderung kommt, die sofort nicht ist.
Die Return-Anweisung führt vor die Antwort, so dass die Variable noch nicht festgelegt wurde.
Lassen Sie Ihre Callback-Funktion tun, was mit den Daten zu tun ist. Versuche nicht, es zurückzugeben.
Wenn Sie keine asynchrone Funktion verwenden möchten, verwenden Sie besser die folgende:
function getValue(){
var value= $.ajax({
url: 'http://www.abc.com',
async: false
}).responseText;
return value;
}
Diese Funktion wartet, bis der Wert von dem Server zurückgegeben wird.
empfehle verwenden ** responseJSON ** .. danke, funktioniert gut! – KingRider
- 1. Wie gibt man einen Wert in Excel UDF-Funktion zurück?
- 2. Wie gibt man in Python einen Wert von __init__ zurück?
- 3. Antwort von $ .getJSON gibt null zurück
- 4. Wie gibt man mehr als einen Wert von einer Funktion in Python zurück?
- 5. Wie gibt man einen Wert aus der Funktion zurück, die von der Factory übergeben wurde?
- 6. Wie gibt man einen Wert von einer Funktion zurück, die als Parameter in Javascript an eine andere Funktion übergeben wird?
- 7. Wie gibt man einen Wert von einem Lambda-Ausdruck zurück?
- 8. Das Drucken einer Funktion gibt einen unerwarteten Wert zurück, warum?
- 9. getJSON Variable gibt undefined zurück
- 10. Wie gibt man einen Wert mit Konstruktor in C# zurück?
- 11. Funktion gibt keinen Wert zurück
- 12. Wie man ein Servlet von einer jQuery's $ .ajax() Funktion aufruft?
- 13. JavaScript gibt den Wert von einer inneren Funktion zurück
- 14. Wie gibt man einen Wert von der entprellten Funktion in Javascript zurück?
- 15. Wie gibt man den Wert in einer Void-Funktion in Swift 2.0 zurück?
- 16. Wie gebe ich einen Wert aus einer Scala-Funktion zurück?
- 17. $ .getJSON zurück cached Daten in IE8
- 18. Wie gibt man mit RxJava einen Wert zurück?
- 19. Wie gibt man einen Wert für ein Ereignis zurück?
- 20. Wie gibt man mehr als einen Wert in Java zurück?
- 21. Wie gibt man einen Wert mit anonymer Methode zurück?
- 22. Java gibt einen Wert von einer Methode zurück - Anfänger
- 23. Wie gibt man nullptr aus einer Lambda-Funktion zurück?
- 24. Abbrechen einer äußeren Funktion innerhalb einer Funktion, die sie aufruft
- 25. NSDecimalNumber gibt einen falschen Wert zurück uint64_t
- 26. Wie gibt man mehrere Werte in einer Funktion (Python) zurück?
- 27. Warum gibt diese Perl-Funktion einen Wert zurück?
- 28. Warum gibt die WriteTo-Methode von io.WriterTo einen Int64-Wert und nicht einen Int-Wert zurück?
- 29. Warum gibt printf einen Wert zurück?
- 30. Gibt man einer Objekteigenschaft einen Array-Wert?
Siehe http://stackoverflow.com/questions/3537434/cant-get-correct-return-value-from-an-jquery-ajax-call –
möglich Duplikat von [Wie die Antwort von einem AJAX-Aufruf zurück? ] (http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – Bergi