JQuery在提交表单后更改表单URL

时间:2013-01-12 02:12:06

标签: javascript jquery

我遇到了一个奇怪的问题,我在表单提交后更改了表单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);它显示我没有网址,但alert(data.url)显示我的网址。

4 个答案:

答案 0 :(得分:1)

更改

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

$('#payment-form').attr("action", data.url);

答案 1 :(得分:1)

更新:原因是标记中的空操作参数。如果你把它完全从标记中删除,那么当你从ajax调用中获得data.url时,可以通过jQuery设置该属性。

答案 2 :(得分:0)

成功回调中的

this不是表格

答案 3 :(得分:0)

我没有看到ID为payment_form的元素:

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

请改为尝试:

$('#payment-form').attr("action", data.url); // <--- notice the 'dash' instead of the underscore