Próbuję wywołać funkcję zawierającą kod jQuery. Chcę, aby ta funkcja zwróciła wyniki instrukcji jQuery. To nie działa, a ja próbuję zrozumieć dlaczego.
function showGetResult (name) {
var scriptURL = "somefile.php?name=" + name;
return $.get(scriptURL, {}, function(data) { return data; });
}
alert (showGetResult("John"));
Alert wyświetla "[object XMLHttpRequest]
." Jeśli jednak samodzielnie uruchomię instrukcję jQuery, poza funkcją, działa ona poprawnie ->$.get(scriptURL, {}, function(data) { alert(data); })
Chciałbym móc ponownie użyć tego kodu, umieszczając go wewnątrz funkcji, która zwraca $.get
dane. Jaki podstawowy błąd popełniam tutaj?
Dzięki za dokładny podział. Kombinacja przełączania na synchroniczne i używania zmiennej w zewnętrznym zakresie do przekazywania danych rozwiązała mój problem. – Kai
Jest to w porządku, ale należy pamiętać, że przełączenie na synchroniczne powoduje, że przeglądarka blokuje się podczas oczekiwania na odpowiedź. To prawdopodobnie pomyłka, chyba że wiesz, że twój użytkownik zawsze będzie na błyskawicznym połączeniu, a twój serwer nigdy nie zostanie zalany.Jest to również sprzeczne z tym, o co chodzi w AJAX - ma to na celu sprawienie, by aplikacje internetowe były bardziej responsywne, ale ta zmiana może potencjalnie sprawić, że twoja odpowiedź stanie się mniej responsywna. –
Zgadzam się z @JacobM, że lepiej jest użyć asynchronicznego, jeśli w ogóle możliwe i poradzić sobie z działaniami w wywołaniu zwrotnym. – tvanfosson