1

我遇到了一个奇怪的问题,我在提交表单后更改了表单 url。我已经更改了表单字段,它们正在完美地改变,但操作 url 没有改变......这是 HTML 代码..

<form action="" method="post" id="payment-form">
    <input type="hidden" id="email" name="email" value="">
    ....
</form>

jQuery 代码

$.ajax({
    url: form_url,
    type: 'post',
    context:this,
    data: $("#payment-form").serialize(),
    dataType: 'json',
    success: function(data) {
        if(data.success) {
            $('#payment_form').attr("action", data.url);
            $('#email').val(data.email);
            alert($("#payment-form").attr('action'));
            //$("#payment-form").submit();

        }
        else {
            $('#error').html(data.errors).addClass('error').fadeIn("slow").fadeOut(9000);
        }
    }
});

警报显示我没有网址,这是为什么呢?

更新

我已经设置$('#payment_form').attr("action", data.url);它没有显示 url,但alert(data.url)显示了 url。

4

4 回答 4

1

改变

$(this).attr("action", data.url);

$('#payment-form').attr("action", data.url);
于 2013-01-12T02:18:52.490 回答
1

更新:原因是标记中的空操作参数。如果您将其完全排除在标记之外,则可以在您data.url从 ajax 调用返回时由 jQuery 设置该属性。

于 2013-01-12T02:25:34.770 回答
0

this在成功回调中不是形式

于 2013-01-12T02:19:40.477 回答
0

我没有看到带有 ID 的元素payment_form

$('#payment_form').attr("action", data.url);

试试这个:

$('#payment-form').attr("action", data.url); // <--- notice the 'dash' instead of the underscore
于 2013-01-12T02:25:00.430 回答