W przeszłości robiłem jQuery, ale utknąłem w tym całkowicie. Wiem o zaletach i wadach używania synchronicznych wywołań ajax, ale tutaj będzie to wymagane.
Strona zdalna jest ładowana (kontrolowana przez firebug), ale nie jest wyświetlany żaden zwrot.
Co powinienem zrobić inaczej, aby funkcja powróciła poprawnie?
function getRemote() {
var remote;
$.ajax({
type: "GET",
url: remote_url,
async: false,
success : function(data) {
remote = data;
}
});
return remote;
}
ajax
jquery
synchronous
Przemysłowy
źródło
źródło
seems that the statement "[synchronous] will be required" indicates a lack of understanding of JavaScript engines, thus a poorly architected app.
Lub bardzo dobre zrozumienie: jeśli chcesz wykonać połączenie AJAXonbeforeunload
, użycie żądania synchronicznego jest w rzeczywistości zalecanym sposobem (ponieważ okno przeglądarki zniknęłoby, zanim żądanie zwróci się inaczej). W każdym razie wyraźnie mówi: „Wiem o zaletach i wadach korzystania z synchronicznych wywołań ajax” ... Może po prostu mu uwierzyć?Odpowiedzi:
Tak jak powinno być w przypadku żądania synchronicznego
Przykład - http://api.jquery.com/jQuery.ajax/#example-3
UWAGA: Ustawienie właściwości asynchronicznej na wartość false jest przestarzałe i jest w trakcie usuwania ( link ). Wiele przeglądarek, w tym Firefox i Chrome, już zaczęło drukować ostrzeżenie w konsoli, jeśli używasz tego:
Chrom:
Firefox:
źródło
responseText
zawsze zwraca ciąg. Jeśli spodziewasz JSON, okłady$.ajax
zJSON.parse
.<i>
<b>
tagi i . Moja rekomendacja: używaj tych funkcji, aby nie zniknęły.Używasz nieprawidłowo funkcji ajax. Ponieważ jest zsynchronizowany, zwraca dane w taki sposób:
źródło
jak daleko jest ten adres? czy to z tej samej domeny? kod wygląda dobrze
Spróbuj tego
źródło
remote_url
jest poprawnie zdefiniowany, a wywołanie AJAX jest poprawnie wykonywane, jak wspomniano (kontrolowane przez firebug). Po prostu nie ma powrotu!źródło