Php 在默认表单操作之后运行ajax?
我使用以下代码使用AJAX运行PHP文件。它工作得很好,而且应该如此 但是,AJAX代码所在的表单有一个Php 在默认表单操作之后运行ajax?,php,ajax,Php,Ajax,我使用以下代码使用AJAX运行PHP文件。它工作得很好,而且应该如此 但是,AJAX代码所在的表单有一个默认操作。例如 我的AJAX代码如下: <script> $('#select').change(function(){ var selectedValue = $(this).val(); if (selectedValue === 'Yes') { $(
默认操作
。例如
我的AJAX代码如下:
<script>
$('#select').change(function(){
var selectedValue = $(this).val();
if (selectedValue === 'Yes') {
$(function(){
$('form').submit(function(e){
var thisForm = $(this);
//Prevent the default form action
e.preventDefault();
//Post the form to the send script
$.ajax({
type: 'POST',
url: 'mySecond.php',
data: thisForm.serialize(),
//Wait for a successful response
});
})
});
} else {
}
});
</script>
$('#select')。更改(函数(){
var selectedValue=$(this.val();
如果(selectedValue==“是”){
$(函数(){
$('form')。提交(函数(e){
var thisForm=$(本);
//阻止默认窗体操作
e、 预防默认值();
//将表单发布到发送脚本
$.ajax({
键入:“POST”,
url:'mySecond.php',
数据:thisForm.serialize(),
//等待成功的响应
});
})
});
}否则{
}
});
我知道e.preventDefault()
意味着它将摆脱默认的表单操作,并且只执行AJAX调用
那么,有没有办法同时执行AJAX
和默认表单操作
?或者,一个接一个
另外,我确实删除了e.preventDefault()代码>它将停止AJAX调用的工作
任何帮助都将不胜感激
谢谢,不是这样的
如果不将响应表单提交的页面设置为在加载时发出Ajax请求,则无法执行默认表单操作,然后执行Ajax
您不能执行Ajax请求,然后允许默认表单提交继续,因为Ajax是异步的,所以在触发表单提交之前它不会完成
您可以取消默认表单操作,执行Ajax请求,然后(在Ajax请求的响应处理程序中)以编程方式提交表单(通过调用其submit()
方法)
您最好将普通表单提交作为一个请求来执行这两项任务,而不必使用Ajax。我不知道您为什么要这样做,但有一种方法:
<script>
var continue = true;
$('#select').change(function(){
var selectedValue = $(this).val();
if (selectedValue === 'Yes') {
$(function(){
$('form').submit(function(e){
var thisForm = $(this);
//Prevent the default form action
if(continue){
e.preventDefault();
//Post the form to the send script
$.ajax({
type: 'POST',
url: 'mySecond.php',
data: thisForm.serialize(),
//Wait for a successful response
success: function(data){
continue = false;
$(thisForm).submit();
}
});
}
})
});
} else {
}
});
</script>
var continue=true;
$('#select')。更改(函数(){
var selectedValue=$(this.val();
如果(selectedValue==“是”){
$(函数(){
$('form')。提交(函数(e){
var thisForm=$(本);
//阻止默认窗体操作
如果(继续){
e、 预防默认值();
//将表单发布到发送脚本
$.ajax({
键入:“POST”,
url:'mySecond.php',
数据:thisForm.serialize(),
//等待成功的响应
成功:功能(数据){
continue=false;
$(此表单)。提交();
}
});
}
})
});
}否则{
}
});
试试下面的方法。在done回调中执行ajax调用
<button id="btnSave" type="submit" formaction="Save">Save</button>
$('#btnSave').click(function (e) {
var thisForm = $(this).closest( form ).serialize();
$.ajax({
url: '#',
type: 'GET',
cache: false
}).done(function(result) {
CallMySecond(thisForm );
});
});
function CallMySecond(data){
$.ajax({
type: 'POST',
url: 'mySecond.php',
data: thisForm.serialize()
});
}
保存
$('#btnSave')。单击(函数(e){
var thisForm=$(this).closest(form).serialize();
$.ajax({
url:“#”,
键入:“GET”,
缓存:false
}).完成(功能(结果){
CallMySecond(这种形式);
});
});
函数CallMySecond(数据){
$.ajax({
键入:“POST”,
url:'mySecond.php',
数据:thisForm.serialize()
});
}
您不能同时执行AJAX和默认表单操作
,因为默认表单操作
将重新加载当前页面(或重定向到另一个页面)。有机会举个例子吗?ref\u to\u form.submit()
!那去哪了?这意味着什么?这意味着什么?“在Ajax请求的响应处理程序中”这意味着什么?这意味着“提交此表单”我没有标记和完整的代码,但它在哪一行表示语法错误?可能会很快到达:)第一行<代码>var continue=true代码>