Ajax调用赢得';t pass-表单始终由php提交
我有一个表单,默认情况下,它与php uri_请求一起提交。 现在我试图添加一个ajax调用来提交表单,但它仍然使用php提交 提交表单的ajax调用是:Ajax调用赢得';t pass-表单始终由php提交,php,jquery,ajax,Php,Jquery,Ajax,我有一个表单,默认情况下,它与php uri_请求一起提交。 现在我试图添加一个ajax调用来提交表单,但它仍然使用php提交 提交表单的ajax调用是: $(document).ready(function() { $("#contactform").submit(function(e) { e.preventDefault(); }); $.ajax({ cache: false, type: 'POST',
$(document).ready(function() {
$("#contactform").submit(function(e) {
e.preventDefault();
});
$.ajax({
cache: false,
type: 'POST',
data: ("#contactform").serialize(),
url: 'formfiles/submit.php',
// for ajax the submit.php is on a
success: function() {
// separate page
$('#contactform').fadeOut(200).submit();
$('#success').delay(200).fadeIn(200);
}
});
return false;
});
html表单属性包括:
<form action="#n" class="active" method="post" name="contactform" id="contactform">
在ajax调用开始时,它将不起作用,但如果没有ajax,它将起作用(只有prevent默认值!)
代码有什么问题?为什么它不起作用
提前谢谢你的帮助
编辑这里是html{在一个包含文件中(hole站点是一个php动态结构)}
您可以按如下方式重新构造代码以修复问题。您不需要返回false代码>自e.preventDefault()代码>会处理好的
$(document).ready(function () {
$("#contactform").submit(function (e) {
e.preventDefault();
$.ajax({
cache: false,
type: 'POST',
data: $("#contactform").serialize(), //note that $ mark is added
url: 'formfiles/submit.php', // for ajax the submit.php is on a
success: function () { // separate page
$('#contactform').fadeOut(200).submit();
$('#success').delay(200).fadeIn(200);
}
});
});
});
在ajax调用的数据:(“#contactform”).serialize()行中有一个错误。它应该是数据:$(“#contactform”).serialize()
试试这个:
$(document).ready(function() {
$("#contactform").submit(function(e){
$.ajax({
cache: false,
type: 'POST',
data: $("#contactform").serialize(),
url : 'formfiles/submit.php', // for ajax the submit.php is on a
success: function() { // separate page
$('#contactform').fadeOut(200).submit();
$('#success').delay(200).fadeIn(200);
},
error: function(error_response){
console.log(error_response);
}
});
});
});
更新:
我发现你的代码有一些问题
是否加载了所需的jQuery库?我在你粘贴的html中没有看到。希望你已经把它包括在标题里了
添加一个e.preventDefault()
防止表单的默认操作,因为输入类型是submit
。如果您没有输入,表单将以默认方法提交
我看不到脚本
标记已关闭。您应该关闭脚本
标记,否则它将无法工作。请参阅以下更新代码:
<script type="text/javascript">
$(document).ready(function() {
$("#contactform").submit(function(e){
e.preventDefault();
$.ajax({
cache: false,
type: 'POST',
data: $("#contactform").serialize(),
url : 'formfiles/submit.php', // for ajax the submit.php is on a
success: function() { // separate page
$('#contactform').fadeOut(200).submit();
$('#success').delay(200).fadeIn(200);
}
});
});
});
</script>
希望这能有所帮助我已经尝试过该代码,但仍然不起作用。还尝试了其他解决方案,以不同的方式编写ajax调用,但代码无法工作。把电话放在哪里重要吗?在表格之前还是之后?另外,是否可能与其他jquery脚本存在冲突?只要代码在$(document).ready(function(){将代码放在页面的何处并不重要。请检查开发人员工具(FireBug)对于JS errorsit show,控制台上什么都没有。似乎ajax调用不存在仍然不工作!!为什么?可能有冲突?可能?调用的位置很重要?@Someone33你能发布完整的HTML吗form@Someone33代码正在运行,ajax调用正在进行。ajax的响应是什么。您已经编写了ajax的成功函数。请编写错误方法。检查我的新编辑。错误响应将在浏览器控制台中打印。您能检查错误是什么吗error@Someone33是否确实调用了表单提交函数。是否可以在$(“#contactform”)中添加一些警报。提交(函数(e){若要检查该请求是否已发出,请确保调用Submit函数,因为表单始终使用php提交。请在调用中放置一个警报(“正在工作”);
。仍然不工作:-(
$(document).ready(function() {
$("#contactform").submit(function(e){
$.ajax({
cache: false,
type: 'POST',
data: $("#contactform").serialize(),
url : 'formfiles/submit.php', // for ajax the submit.php is on a
success: function() { // separate page
$('#contactform').fadeOut(200).submit();
$('#success').delay(200).fadeIn(200);
},
error: function(error_response){
console.log(error_response);
}
});
});
});
<script type="text/javascript">
$(document).ready(function() {
$("#contactform").submit(function(e){
e.preventDefault();
$.ajax({
cache: false,
type: 'POST',
data: $("#contactform").serialize(),
url : 'formfiles/submit.php', // for ajax the submit.php is on a
success: function() { // separate page
$('#contactform').fadeOut(200).submit();
$('#success').delay(200).fadeIn(200);
}
});
});
});
</script>
<script type="text/javascript">
$(document).ready(function() {
$("#contactform").submit(function(e){
e.preventDefault();
$.ajax({
cache: false,
type: 'POST',
data: $("#contactform").serialize(),
url : 'formfiles/submit.php', // for ajax the submit.php is on a
success: function(response) { // separate page
if (response == 'success') {
//write what you want to do on success
$('#success').delay(200).fadeIn(200);
} else {
//show error
}
}
});
});
});
</script>