我为验证我的表单(ajax)制作了这段代码,但它不起作用,(不执行Checkpage
函数)。
$('#myform').submit(function(e){
function Checkpage(catego){
var desc=$('#descripcion').val();
var title = $("#title").val();
var parametros = {"descripcion":desc,"title":title};
$.ajax({
data: parametros,
url: 'Check.php',
type: 'post',
beforeSend: function () {
$("#Checkpage").html("...");
},
success: function (response) {
if(response!=" "){
alert(response);
} else {
alert('Process');
$("#myform").submit();
}
}
});
}
})
请帮帮我
答案 0 :(得分:0)
当前所有提交函数都只是声明一个名为Checkpage()
的函数,它不会调用它。只需完全删除Checkpage()
函数声明,然后将其余代码直接运行在submit()
函数中。
然后当然,你不需要递归地调用submit()
。如果验证通过以允许提交执行其预期操作或返回true
以阻止表单提交,则需要返回false
。
我命令这样做,但是在返回true / false响应之前,您需要实际等待来自ajax调用的结果,因为此调用是异步的。一种方法是使用async: false
使呼叫成为阻塞同步呼叫。然后,您可以设置一个标志以指示POST有效并返回该标志的值。
所以你最终得到的结果可能是这样的:
$('#myform').submit(function(e){
var validationSuccess = false;
var desc=$('#descripcion').val();
var title = $("#title").val();
var parametros = {"descripcion":desc,"title":title};
$.ajax({
data: parametros,
url: 'Check.php',
type: 'post',
async: false,
beforeSend: function () {
$("#Checkpage").html("...");
},
success: function (response) {
if(response == " ") {
// this is valid request
valdidationSuccess = true;
}
}
});
return validationSuccess;
});