Ajax 在提交时使用 Ajax 请求重定向在 DIV 中加载的表单 - Framework7
Ajax Form loaded in a DIV using Ajax request redirects on submit - Framework7
我正在使用 Framework7 加载 Ajax 页面,如下所示 myapp.js:
$('#myForm').validate({
rules: {
aiterms: {
required: true
}
},
submitHandler: function(form) {
$$.ajaxSetup({ cache: false });
var myterms;
var mybookingid;
$("#submit").unbind().click(function() {
myterms = $("#myterms").val();
mybookingid = $("#my_booking_id").val();
if ($('#myterms').is(":checked")==false)
{
myApp.alert('You need to accept terms to proceed further!', 'Terms Not Accepted!');
}
else
{
$$.ajax({
type: "POST",
url: "submit1.php",
dataType : 'html',
data: {myterms1: myterms,mybookingid1: mybookingid },
cache: false,
success: function(result){
$("#mycontent" ).empty();
$("#mycontent").html(result);
},//success
error: function(result)
{
myApp.alert('We are unable to process data due to technical reasons!', 'Error');
}
});
}//else
return false;
});
}//submit handler
}); //validate
my_submit1 页面中的表单在 #mycontent
div 中更新:
<div id="mycontent" >
第二页的表单提交为
<form id="form2">
....
<input type="submit" name="submit" id="mysubmit1" value="Submit" />
并在 myapp.js 中:
$$(document).on('click','#mysubmit1',function(){
var a = $("#a").val();
var b = $("#b").val();
var c = $("input[name='c']:checked").val(); //radio button
.....
if(a == '')
{
myApp.alert('Please select and enter data a!', 'Insufficient Data');
}
else if(b =='')
{
myApp.alert('Please select and enter data b!', 'Insufficient Data');
}
else if ($('.c').is(":checked")==false)
{
myApp.alert('Please select whether c selected or not!', 'Insufficient Data');
}
...
else
{
$$.ajax({
type: "POST",
url: "submit2.php",
dataType : 'html',
data: {a: a,b: b,c: c},
cache: false,
success: function(result){
$("#mycontent" ).empty();
$("#mycontent").html(result);
},//success
error: function(result)
{
myApp.alert('We are unable to process data due to technical reasons!', 'Error');
}
});
}//else
return false;
});
第二个表单在提交时加载警报会立即显示并且页面正在重定向。此外,变量 以 GET 方式传递,而不是 Ajax 请求中指定的 POST 。
第一个表单提交正在正确更新 div。问题仅发生在第二个表单中(替换了 div 中的表单数据)。
我无法查明原因。我传递第二个请求的方式有问题吗??
myapp.js更新:
更改自
$$(document).on('click','#mysubmit1',function(){
到
$$(document).on('click','#mysubmit1',function(e){
e.preventDefault();
我正在使用 Framework7 加载 Ajax 页面,如下所示 myapp.js:
$('#myForm').validate({
rules: {
aiterms: {
required: true
}
},
submitHandler: function(form) {
$$.ajaxSetup({ cache: false });
var myterms;
var mybookingid;
$("#submit").unbind().click(function() {
myterms = $("#myterms").val();
mybookingid = $("#my_booking_id").val();
if ($('#myterms').is(":checked")==false)
{
myApp.alert('You need to accept terms to proceed further!', 'Terms Not Accepted!');
}
else
{
$$.ajax({
type: "POST",
url: "submit1.php",
dataType : 'html',
data: {myterms1: myterms,mybookingid1: mybookingid },
cache: false,
success: function(result){
$("#mycontent" ).empty();
$("#mycontent").html(result);
},//success
error: function(result)
{
myApp.alert('We are unable to process data due to technical reasons!', 'Error');
}
});
}//else
return false;
});
}//submit handler
}); //validate
my_submit1 页面中的表单在 #mycontent
div 中更新:
<div id="mycontent" >
第二页的表单提交为
<form id="form2">
....
<input type="submit" name="submit" id="mysubmit1" value="Submit" />
并在 myapp.js 中:
$$(document).on('click','#mysubmit1',function(){
var a = $("#a").val();
var b = $("#b").val();
var c = $("input[name='c']:checked").val(); //radio button
.....
if(a == '')
{
myApp.alert('Please select and enter data a!', 'Insufficient Data');
}
else if(b =='')
{
myApp.alert('Please select and enter data b!', 'Insufficient Data');
}
else if ($('.c').is(":checked")==false)
{
myApp.alert('Please select whether c selected or not!', 'Insufficient Data');
}
...
else
{
$$.ajax({
type: "POST",
url: "submit2.php",
dataType : 'html',
data: {a: a,b: b,c: c},
cache: false,
success: function(result){
$("#mycontent" ).empty();
$("#mycontent").html(result);
},//success
error: function(result)
{
myApp.alert('We are unable to process data due to technical reasons!', 'Error');
}
});
}//else
return false;
});
第二个表单在提交时加载警报会立即显示并且页面正在重定向。此外,变量 以 GET 方式传递,而不是 Ajax 请求中指定的 POST 。
第一个表单提交正在正确更新 div。问题仅发生在第二个表单中(替换了 div 中的表单数据)。 我无法查明原因。我传递第二个请求的方式有问题吗??
myapp.js更新:
更改自
$$(document).on('click','#mysubmit1',function(){
到
$$(document).on('click','#mysubmit1',function(e){
e.preventDefault();