如何使此代码等到表单获得响应。表格必须经常提交并在重复之前得到回复。
如果有办法确保有回应会很有点像成功:或错误:
$("#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;
}
}
});
答案 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 */ }
});