JQuery load () com função de retorno de chamada não captura clique ()
-
26-09-2019 - |
Pergunta
Não estou tendo sorte em obter uma caixa de diálogo JQueryui para o Formulário Ajax Carregar um, que se envia via Ajax.
Tudo funciona até o ponto de capturar o formulário que está sendo enviado e, em vez disso, enviá -lo através de uma chamada AJAX. Assim, a ação da forma é acionada e o navegador é redirecionado. A chamada do Ajax nunca é feita.
Meu código é o seguinte
$(document).ready(function() {
$('.viewOrder').click(function() {
$('#displayOrder').load(this.href, [], function() {
console.log("landed here");
$('#blah').click(function() {
console.log("submiting the form via ajax");
$.ajax({
url: "/ajax/orderupdate",
type: "GET",
data: data,
cache: false,
//success
success: function (data) {
console.log("worked:");
}
});
return false;
});
});
return false;
});
});
.vieworde é o href que é carregado com AJAX. Isso funciona bem. Eu já li muitas perguntas semelhantes aqui e parece que o load () não executa scripts incorporados no retorno HTML, mas meu código de retorno é puro HTML sem scripts. Alguma ideia?
Solução
Os eventos estão vinculados à carga da página. Na página Carregar o formulário que você está vinculando, o evento de clique não existe. Eu uso o plug -in LiveQuery, mas eles adicionaram ao vivo ao JQuery 4, que você também pode usar (eu tive alguns problemas com o IE, então voltei ao LiveQuery)
Então carregue o LiveQuery com seus scripts http://docs.jquery.com/plugins/livequery
e mudar
$ ('#orderUpdate'). submeter (function () {
para
$ ("#orderUpdate"). LiveQuery ("submeter", function () {
Outras dicas
IMHO você deve tentar capturar o submit
Em vez do clique, assim você evita submetidos pelo teclado, e pode até resolver seu problema.