Javascript 使用jQuery提交通过Ajax加载的表单

Javascript 使用jQuery提交通过Ajax加载的表单,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我有一个表单,在用户选择一系列选项后,它会自动加载 显示表单后,用户必须单击表单中的按钮以确认选择并重定向到第三方站点。 在用户被重定向之前,我需要通知我们的系统,用户已确认选项,并生成一个ID以通过第三方站点,以便它能够识别交易 jQuery函数如下所示 $.ajax({ type: "GET", url: 'functions.php?funcion=transaccion&order=' + pedido , dataType: "xml", su

我有一个表单,在用户选择一系列选项后,它会自动加载

显示表单后,用户必须单击表单中的按钮以确认选择并重定向到第三方站点。 在用户被重定向之前,我需要通知我们的系统,用户已确认选项,并生成一个ID以通过第三方站点,以便它能够识别交易

jQuery函数如下所示

$.ajax({
    type: "GET",
    url: 'functions.php?funcion=transaccion&order=' + pedido , 
    dataType: "xml",
    success: function(xml){
        $("#param").val($(xml).find('trxid').text());
        $('#form_pago').submit();
    },
    error: function() {
        alert("Error en transaccion.");
    }
}); 
ID已带回,但表单未提交

我的猜测是,问题在于表单是以动态方式加载的,因此在解析DOM时它不存在,但我找不到如何在任何地方提交它

编辑:

似乎我的问题不够具体,或者我不理解答案,因为它们不能解决我的问题

下面是代码的完整版本:

这是加载表单的函数

function mostrarFormulario(pedido){
    $.ajax({
        type: "GET",
        url: 'functions.php?funcion=getFormularioPago&pedido=' + pedido, 
        dataType: "xml",
        success: function(xml){
            $("#fin_pedido").html($(xml).find('formulario').text());
        },
        error: function() {
            alert("Se ha producido un error al generar el boton para realizar el pago.");
        }
    }); 
}
这是正在加载的表单

<form method="post" action="https://sps433.decidir.net/sps-ar/Validar" target="_top" id="pago_decidir">  
  <input name="NROCOMERCIO" value="xxxxxxx" type="hidden">
  <input name="NROOPERACION" value="NROOP" type="hidden">
  <input name="MONTO" value="nnnnnnnn" type="hidden">
  <input name="CUOTAS" value="" type="hidden">
  <input name="URLDINAMICA" value="http://URL-RETORNO" type="hidden">
  <input name="EMAILCLIENTE" value="xxxxxx@xxxxxx" type="hidden">
  <input name="MEDIODEPAGO" value="xxxxx" type="hidden">
  <input name="PARAMSITIO" value="" id="paramsitio" type="hidden">
  <input value="Pagar con Decidir" name="submit" alt="Pagar con Decidir" onclick="generarTransaccion('nnn')" border="0" type="button">
</form>

此函数可正确检索并替换ID,但不会提交表单。

请尝试使用.on包装您的提交
function mostrarFormulario(pedido){
    $.ajax({
        type: "GET",
        url: 'functions.php?funcion=getFormularioPago&pedido=' + pedido, 
        dataType: "xml",
        success: function(xml){
            $("#fin_pedido").html($(xml).find('formulario').text());
        },
        error: function() {
            alert("Se ha producido un error al generar el boton para realizar el pago.");
        }
    }); 
}
乙二醇

其中formcontainer是您将表单放入其中的容器的id,dynamicformbutton是表单中的一类submit按钮

function mostrarFormulario(pedido){
    $.ajax({
        type: "GET",
        url: 'functions.php?funcion=getFormularioPago&pedido=' + pedido, 
        dataType: "xml",
        success: function(xml){
            $("#fin_pedido").html($(xml).find('formulario').text());
        },
        error: function() {
            alert("Se ha producido un error al generar el boton para realizar el pago.");
        }
    }); 
}

编辑:您将希望将其置于ajax调用之外。

由于表单是动态加载的,因此它不会出现在DOM中。因此,您需要将事件绑定到文档,以侦听单击submit按钮

因此,如果您的表单提交按钮Id=btn,那么这应该可以工作-

$(document).on('click', '#btn', function() {
    // do your stuff
    ...
});

使用以下完整代码:

$(document).on('click', '#buttonID', function() {
   $.ajax({
    type: "GET",
    url: 'functions.php?funcion=transaccion&order=' + pedido , 
    dataType: "xml",
    success: function(xml){
        $("#param").val($(xml).find('trxid').text());
        $('#form_pago').submit();
    },
    error: function() {
        alert("Error en transaccion.");
    }
});
});

放置警报1;函数,帮助您检查此代码是否正常工作。谢谢

如果将console.log$'form_pago'放在success方法的第一位,它会报告什么?您可以在success回调中设置调试器语句,并检查在该上下文中是否找到from_pago,还可以检查下一个url是否设置正确?可能会显示表单是如何附加的?至少是第一次提交的onsubmit首先将数据发送到ajax,以及之后如何更改第三方重定向:我将问题编辑得更具体一些。URL是正确的,因为如果我更改“提交”按钮,它将正确地发送到目标,但没有所需的ID。这对我没有任何帮助。函数正在执行中,是提交失败。按钮有一个onClick可以正确执行,是表单提交失败。我对问题进行了更具体的编辑,并提供了额外的代码。该按钮有一个正确执行的onClick,它是表单提交失败。我对问题进行了编辑,使其更加具体,并提供了附加代码