Php 使用$.post函数进行Jquery实时输入验证
大家好: 我是Jquery和web开发的新手,所以请耐心听我说。 我想在我的网站上用Jquery实现实时输入验证。也许我在这篇文章中有一些语法错误,但我确信我的真实代码中没有任何语法错误 这就是我所拥有的,每当用户输入非空的内容时,就会调用错误并向服务器PHP+MySQL发出post请求,以检查输入值是否已经存在。按下“提交”按钮时,也会再次使用该错误 在我按下submit按钮之前,它工作得非常好。如果输入已存在的内容,则不会提交表单。但是,如果我输入了新的内容,即使数据仍然被插入到数据库中,我仍然会得到exists文本。成功后,我将永远获得成功。似乎当我提交时,来自错误的.post请求是在表单的.post请求之后发出的。有人知道如何解决这个错误吗?或者用另一种方法来构造这种类型的输入验证?? 谢谢Php 使用$.post函数进行Jquery实时输入验证,php,javascript,jquery,Php,Javascript,Jquery,大家好: 我是Jquery和web开发的新手,所以请耐心听我说。 我想在我的网站上用Jquery实现实时输入验证。也许我在这篇文章中有一些语法错误,但我确信我的真实代码中没有任何语法错误 这就是我所拥有的,每当用户输入非空的内容时,就会调用错误并向服务器PHP+MySQL发出post请求,以检查输入值是否已经存在。按下“提交”按钮时,也会再次使用该错误 在我按下submit按钮之前,它工作得非常好。如果输入已存在的内容,则不会提交表单。但是,如果我输入了新的内容,即使数据仍然被插入到数据库中,我
有几个问题马上就突出了。 第一个错误函数总是返回false。 第二个$.post是异步的。这意味着它将继续执行代码,同时等待ajax请求的响应。您可以在jquery my中使用$.ajaxSetup{async:false}更改它;在$.post请求之前 下面是一个应该正常工作的代码示例:
$('.unique').change(function(){
error($(this));
});
function error(obj)
{
var ok = true;
if(obj.val().length == 0)
{
alert('This field can not be blank');
ok = false;
}
else
{
var data = {
action: 'check',
input: obj.attr('name'),
value: obj.val()
};
$.ajaxSetup({async:false}); // Force program execution to wait for ajax response
$.post('database.php', data, function (reply) {
if (reply) {
alert("This " + obj.attr('name') + " already exists");
ok = false;
}
$.ajaxSetup({async:true}); // Setup ajax to be async again
});
}
return ok;
}
//When the user submits the form
$('#info').live('submit', function(e){
e.preventDefault();
var ok = true;
//Passes each input to the error()
$('.unique').each(function(){
ok = ok && error($(this));
});
if (!ok) {
return false;
}
$.post('database.php', 'action=insert&' + $(this).serialize(), function(r) {
alert(reply);
});
});
我以前也有过这个问题。可以避免此操作以防止出现默认行为:
$('#info').submit(function(e){
e.preventDefault();
var ok = true;
var data = 'action=insert&' + $(this).serialize();
//Passes each input to the error()
$('.unique').each(function{
var temp = err($(this));
ok = ok && temp;
});
if(!ok) return false;
$.post('database.php',
data,
function(reply){
alert(reply);
});
});
这将避免实际提交表单。如果您仍然希望在ajax帖子正常时提交它:
$('#info').submit(function(){
var theForm = this;
$.post('database.php',
data,
function(reply){
alert(reply);
theForm.submit();
});
});
是的,关于ok变量,这是一个错误,我刚刚修复了它,谢谢。你能编辑你的帖子并包含err函数吗,从我收集的信息来看,这是一个时间问题,每个帖子在验证过程中的结果,您希望在尝试插入操作之前等待每个帖子完成hi Almog I确实在帖子中包含了错误,谢谢这一行=>var temp=err$this;实际上是var temp=error$this??这实际上是错误$this,我刚刚编辑过,谢谢
$('#info').submit(function(){
var theForm = this;
$.post('database.php',
data,
function(reply){
alert(reply);
theForm.submit();
});
});