JavaScript:表单提交前Ajax调用的控制逻辑
JavaScript: control logic for Ajax call before form submit?
我有一个HTML多部分表单,包含名称、电子邮件和文件上传。
我想首先用Ajax注册用户。如果注册成功,我想继续提交表格。如果失败,我想避免提交表格。
这是我的代码:
--- HTML ---
<form id="account-form" method="post" enctype="multipart/form-data" data-ajax="false" action="upload.php" >
<input type="text" name="username" id="username" />
<input type="email" name="email" id="email" />
<input type="file" id="mediaupload" name="mediaupload" accept="image/*" />
</form>
--- JavaScript ---
accountform.submit(function(event) {
var registration_ok = true;
// See if we can register the user
// And if we can, submit the form.
$.ajax({
type: "POST",
url: "/usercreate.php",
data: postdata,
dataType: 'json',
success: function(data) {
// fine to submit the form.
},
error: function (data){
// If this fails, we don't want to submit the form!
registration_ok = false;
}
});
return registration_ok;
});
然而,它总是返回true——我想这是因为主函数在调用Ajax错误之前返回。
当注册失败时,我如何防止它返回true并提交表格?
谢谢!
您需要始终返回false,而不是registation_ok
,然后在成功函数中,转到:
document.forms["account-form"].submit(); //edited
即,当您按下提交按钮时,永远不要提交表单,等待AJAX返回,然后只有在注册成功时才提交表单。
为什么不在.ajax语句中的onSuccess处理程序中以编程方式提交表单?
类似这样的东西:
document.forms["account-form"].submit();
您可以进行syncronic ajax调用,只需添加async:false,参数
问题是AJAX调用是异步的,所以success
和error
函数只有在函数返回registration_ok
值(您将其预设为true
)之后才会被调用。
相关文章:
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- Jquery事件绑定获胜'当作为方法调用时不起作用,但当直接在控制台中调用时会起作用
- 从根本上说,函数调用出了问题.功能在控制台中确实有效
- 在控制台中隐藏AJAX控制器调用
- 有没有一种明确的方法来找出在FF的开发者控制台中调用函数的位置
- 调用 JavaScript 方法进行 asp.net 控制不起作用
- 单击控制导致不需要的JS调用
- Primefaces密码控制,按回车键调用Webflow函数
- 在Chrome的javascript控制台中,我可以调用一个函数,然后逐步完成它
- "访问控制允许原点不允许原点为null"使用jQuery调用web服务时出错
- 调用javascript函数时,值在控制台中返回为未定义
- 如何控制this.form.submit在mvc中调用的函数
- 控制何时在ARI/Stasis应用程序中调用函数
- 通过Javascript加载Javascript引用,并立即从控制台中调用它
- Javascript不能从ASP调用.NET用户控制
- 是否存在将日志调用添加到Protractor中的控制流的日志函数
- 访问控制源错误通过jQuery调用谷歌自定义搜索API
- 在if语句中调用一个函数来控制确认警报
- 如何在控制台中使用Javascript调用start()和stop()时启动和停止多步动画
- 如何在控制台中使用Javascript调用start()和stop()时启动和删除多步骤动画