等到使用jQuery / Javascript完成

时间:2014-10-07 21:28:22

标签: javascript jquery

如何使此代码等到表单获得响应。表格必须经常提交并在重复之前得到回复。

如果有办法确保有回应会很有点像成功:或错误:

$("#pay_window").dialog({
           autoOpen: false,
           width: 600,
            buttons: {
                "Submit Payment": function(){
                    $("#PaymentForm").submit();



                 <--- NEED A WAIT FUNCTION HERE --->



                    var dialogbox = $(this);
                    $.ajax({
                        url: "/payment",
                        data: $(this).find([company_id, billing_email, first_name, last_name, recurly_token, selected_plan, account]).serialize(),
                        type: "POST",
                        success: function (data) {
                            dialogbox.dialog("close");
                            alert('Payment Completed')

                        },
                        error: function (jqXHR, textStatus, errorThrown) {
                            alert('error: ' + textStatus + ': ' + errorThrown);
                        }
                    });
                    return false;
                }
            }
        });

1 个答案:

答案 0 :(得分:1)

表单提交本质上与表单的“action”属性(或包含表单的页面)指定的端点相同。您可以收集表单数据并发布帖子(通过jQuery重复),然后使用jQuery的Deferred对象方法('then','done','fail'等)或使用$ .ajax和成功/错误选项...当然这不适用于IE 7/8/9(无法访问FormData对象)。

鉴于这种相当简单的形式:

<form id="foo" action="http://example.com/" method="POST">
    <input type="hidden" name="q" value="a">
</form>

可以抓住输入并创建一个'FormData'对象:

var $foo = $('#foo'),
    formData = new FormData($foo[0]),


$.ajax({
    url: $foo.attr('action'),
    data: formData,
    type: "POST",
    success: function (data) {
        /* do what you want */},
    error: function (jqXHR, textStatus, errorThrown) {
        /* do what you've got to */ }
 });