如何在表单提交期间进行 $.get 调用
How to make $.get call during form submission?
我不想使用 AJAX 提交我的表单,但我想通过在表单提交期间向服务器发出几个 GET 请求来制作进度条,因为提交可能需要一段时间才能上传多个文件。我发现在webkit浏览器中,我无法在提交表单时发出GET请求,并且我看到将表单提交到iframe将允许我这样做。
标记如下所示:
<form action="/my-action" target="target-iframe">
...
</form>
<iframe name="target-iframe"></iframe>
而 JavaScript:
$(document).ready(function() {
$("form").on("submit", function() {
$.get("/other-action", function(data) {
// Use data returned here
});
});
});
我仍然没有在 GET 请求上取回数据 - 我怎样才能让它工作?
$(document).ready(function() {
$("form").on("submit", function(e) { //add a parameter e - the event object
e.preventDefault(); //stop the form from submitting
$.get("/other-action", function(data) {
// Use data returned here
});
});
});
编辑
设置一个标志,该标志不允许表单提交,直到您收到响应表单您的 get 请求。收到回复后,设置标志以允许表单提交,然后以编程方式重新提交。
$(document).ready(function() {
var canISubmit = false;
$("form").on("submit", function(e) { //add a parameter e - the event object
var el = $(this);
if(!canISubmit) {
e.preventDefault();
$.get("/other-action", function(data) {
canISubmit = true;
el.submit();
});
}
});
});
确定您的$.get
请求已完成的唯一方法是确保表单不会提交并重定向页面,直到您的$.get
请求完成。
编辑#2
$(document).ready(function() {
$("form").on("submit", function(e) { //add a parameter e - the event object
e.preventDefault();
$.post("url",$(this).serialize())
.done(function(response,status,jqXHR) {
$.get("/other-action")
.done(function(response,status,jqXHR) {
//other stuff done
//refresh the page or do whatever....
})
.fail(function() {
//$.get failed
});
})
.fail(function() {
//$.post failed
});
});
});
相关文章:
- 如何检查$httpBackend中是否未进行GET调用
- JQuery AJAX - 如何使用方法 GET 调用刷新/重新加载页面
- 由于浏览历史设置,angularjs http.get调用未在ie10中启动
- 从$http.get调用更新Angular作用域变量
- 在一小段时间的按键事件后,在angular js中进行get调用
- 如果我只使用POST,那么我的MVC JSON操作怎么能用GET调用呢
- 在标头中包含access_token的 GET 调用
- AngularJS:异步 $http.get 调用导致 View 出现问题
- 如何在表单提交期间进行 $.get 调用
- 使用切换来运行需要来自 GET 调用的 json 的 JS 函数
- 在 $http.get 调用中获取服务上下文
- 为什么 setTimeout 会阻止递归 $http.get 调用
- Angularjs $http.get 调用在页面加载时出错
- 如何在AJAX请求中使用GET调用PHP文件
- 在没有ajax的情况下从javascript对php进行GET调用
- 在.get调用中将jQuery.prush推送到数组中会得到一个空结果
- 无法使用AngularJS中的HTTP get调用从JSON平面文件返回结果
- AJAX GET调用将在第一次调用时工作,但在其他单击之后不工作
- 使用带头的节点js进行GET调用
- POST请求导致GET调用没有响应