Javascript 如何在表单提交期间拨打$.get电话?
我不想用AJAX提交表单,但我想在表单提交过程中向服务器发出几个GET请求,以创建一个进度条,因为提交多个文件可能需要一段时间。我发现在webkit浏览器中,我不能在表单提交时发出GET请求,我发现将表单提交到iframe将允许我这样做 标记如下所示:Javascript 如何在表单提交期间拨打$.get电话?,javascript,ajax,html,forms,upload,Javascript,Ajax,Html,Forms,Upload,我不想用AJAX提交表单,但我想在表单提交过程中向服务器发出几个GET请求,以创建一个进度条,因为提交多个文件可能需要一段时间。我发现在webkit浏览器中,我不能在表单提交时发出GET请求,我发现将表单提交到iframe将允许我这样做 标记如下所示: <form action="/my-action" target="target-iframe"> ... </form> <iframe name="target-iframe"></iframe>
<form action="/my-action" target="target-iframe">
...
</form>
<iframe name="target-iframe"></iframe>
我仍然无法从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
});
});
});
编辑
设置一个标志,在收到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
});
});
});
编辑
设置一个标志,在收到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
});
});
});
编辑
设置一个标志,在收到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
});
});
});
您的代码看起来一切都很好:。确保您的服务器配置正确,并且您正在请求正确的URI。您的代码看起来一切正常:。确保您的服务器配置正确,并且您正在请求正确的URI。您的代码看起来一切正常:。确保您的服务器配置正确,并且您正在请求正确的URI。您的代码看起来一切正常:。请确保您的服务器配置正确,并且您请求的URI正确。我希望在表单提交时出现$.get,因此我不认为这里需要的是preventDefault。谢谢您的帮助。我的问题是,我获取的数据是由表单提交调用的控制器操作动态设置的。因此,我需要在发出get请求之前开始表单提交,否则它将无法返回正确的数据。有什么方法可以做到这一点吗?是的-通过
$.post
请求提交表单(不是通过正常的浏览器提交-因此您仍然可以使用e.preventDefault()
停止表单提交)。然后,当您收到请求的响应时,执行$.get
我正在上载文件,因此$.post
请求变得棘手,我希望$.get
几乎在表单提交完成后立即执行,因此,我不想等到服务器返回响应。我已经为您提供了自己构建此表单所需的一切。我希望在表单提交时发生$.get,因此我不认为这里需要的是preventDefault。谢谢您的帮助。我的问题是,我获取的数据是由表单提交调用的控制器操作动态设置的。因此,我需要在发出get请求之前开始表单提交,否则它将无法返回正确的数据。有什么方法可以做到这一点吗?是的-通过$.post
请求提交表单(不是通过正常的浏览器提交-因此您仍然可以使用e.preventDefault()
停止表单提交)。然后,当您收到请求的响应时,执行$.get
我正在上载文件,因此$.post
请求变得棘手,我希望$.get
几乎在表单提交完成后立即执行,因此,我不想等到服务器返回响应。我已经为您提供了自己构建此表单所需的一切。我希望在表单提交时发生$.get,因此我不认为这里需要的是preventDefault。谢谢您的帮助。我的问题是,我获取的数据是由表单提交调用的控制器操作动态设置的。因此,我需要在发出get请求之前开始表单提交,否则它将无法返回正确的数据。有什么方法可以做到这一点吗?是的-通过$.post
请求提交表单(不是通过正常的浏览器提交-因此您仍然可以使用e.preventDefault()
停止表单提交)。然后,当您收到请求的响应时,执行$.get
我正在上载文件,因此$.post
请求变得棘手,我希望$.get
几乎在表单提交完成后立即执行,所以我不想等到收到服务器的响应,我已经给了你每一个