Mam następującą metodę JQuery Ajax:
$.ajax({
type: "POST",
url: $(form).attr("action"),
data: formData,
dataType: "json",
success: function() {
$("#test").html("testing123");
},
});
Jak napisano, funkcja sukcesu nie uruchamia się.
Jeśli jednak predefiniuję funkcję w innym miejscu, a następnie wywołam ją w następujący sposób:
success: testFunction()
LUB
success: $("#test").html("testing123")
to działa.
czego mi brakuje?
Odpowiedzi:
4 dla odpowiedzi № 1Rozwiązania, które Twoim zdaniem działają, są w rzeczywistości jedynie iluzją. W rzeczywistości nie są wzywani success
, ale dokładnie wtedy, kiedy to ogłaszasz. To prowadzi mnie do wniosku, że twoje wywołanie ajax nie zwraca success
.
Byłby właściwy sposób na zdefiniowanie i przekazanie funkcji
success: testFunction
Jeśli zrobisz success: testFunction()
, uruchamiasz tę funkcję od razu podczas analizowania kodu, a nie kiedy zadzwoni wywołanie zwrotne z twojego ajax. To samo dotyczy
success: $("#test").html("testing123")
i jest faktycznie równoważny, jeśli zadzwoniłeś testFunction()
zaraz po twoim wywołaniu ajax.