没有得到JQuery响应
我有以下脚本:没有得到JQuery响应,jquery,Jquery,我有以下脚本: <script> $(document).ready(function(){ $("div.msg").hide(); $("button.show").click(function(){ $("div.msg").slideDown(2000); }); $("button.hide").click(function(){ $("div.msg")
<script>
$(document).ready(function(){
$("div.msg").hide();
$("button.show").click(function(){
$("div.msg").slideDown(2000);
});
$("button.hide").click(function(){
$("div.msg").slideUp(2000);
});
$("form.reg").submit(function(){
var name = $("#name").val();
if(($("#name").val() == "") || ($("#name").val() == null)){
$("div.error").html("Name cannot be left blank");
//alert("Name cannot be left blank");
return false;
}
else{
$("div.error").html("Name:"+name);
return true;
}
});
$("#name").blur(function(){
var name = $("#name").val();
alert("Hi! "+name);
$.ajax({
type:"POST",
url:"validate.php",
data:"name="+name,
success:function(res){
//alert(res);
$("#error").val(res);
}
});
});
});
</script>
$(文档).ready(函数(){
$(“div.msg”).hide();
$(“button.show”)。单击(函数(){
美元(“div.msg”)。向下滑动(2000年);
});
$(“button.hide”)。单击(函数(){
$(“div.msg”)。slideUp(2000年);
});
$(“form.reg”).submit(函数(){
var name=$(“#name”).val();
if($(“#name”).val()==”)|($(“#name”).val()==null)){
$(“div.error”).html(“名称不能留空”);
//警报(“名称不能为空”);
返回false;
}
否则{
$(“div.error”).html(“名称:”+Name);
返回true;
}
});
$(“#名称”).blur(函数(){
var name=$(“#name”).val();
警报(“嗨!”+姓名);
$.ajax({
类型:“POST”,
url:“validate.php”,
数据:“name=“+name,
成功:功能(res){
//警报(res);
$(“#错误”).val(res);
}
});
});
});
以及validate.php脚本:
<?php
if(isset($_POST['name'])){
$name = $_POST['name'];
if($name == 'sam')
echo '<strong>Already taken.</strong>';
else
echo '<strong>Avaiable</strong>';
}
else
echo 'Not Set!';
?>
我的问题是,我从未将此验证页面的响应输入到我的div中(#error)。请帮助我们解决这个问题。看来您只是使用了错误的jQuery函数来设置结果。从前面的代码中,似乎选择符指向一个div元素,在这种情况下,您需要使用函数
.html()
来设置响应
改变
$("#error").val(res);
到
当然,这是假设你在帖子的成功功能中得到了回应 试试看
$.ajax({
url: "validate.php",
data: { name: $("#name").val() },
type: "POST",
success: function (res) {
alert(res);
//$("#error").val(res);
},
error: function(xhr, status, error) {
alert(xhr.responseText);
}
});
对于这类场景,像firebug这样的工具将非常有用。通过导航到Net-->XHR选项卡,我们可以看到异步请求的结果。我认为如果分离验证函数,会更容易。然后在php验证脚本上使用json响应更安全 HTML/Javascript 函数形式_验证() { var误差=0; var错误消息
if(($("#name").val() == "") || ($("#name").val() == null)){
error_msg = "Name cannot be left blank";
error = 1;
}else
{
$.ajax({
type:"POST",
url:"validate.php",
data:"name="+$("#name").val(),
success:function(res){
if(res.status=='error')
{
error_msg = res.msg;
error = 1;
}
},
dataType: "json"
});
}
if(error==1)
{
$("div.error").html(error_msg);
return false;
}else
{
return true;
}
}
$(document).ready(function(){
("#name").blur(function(){
form_validation();
});
$("form.reg").submit(function(){
if(form_validation())
{
#### Do ajax post to PHP to save to your DB
}
return false; ### Do disable the form submit (page refresh)
});
});
</script>
if($(“#name”).val()==”)|($(“#name”).val()==null)){
错误\u msg=“名称不能为空”;
误差=1;
}否则
{
$.ajax({
类型:“POST”,
url:“validate.php”,
数据:“name=”+$(“#name”).val(),
成功:功能(res){
如果(res.status=='error')
{
错误消息=res.msg;
误差=1;
}
},
数据类型:“json”
});
}
如果(错误==1)
{
$(“div.error”).html(error\u msg);
返回false;
}否则
{
返回true;
}
}
$(文档).ready(函数(){
(“#name”).blur(函数(){
表单_验证();
});
$(“form.reg”).submit(函数(){
if(form_validation())
{
####将ajax发布到PHP以保存到数据库
}
返回false;###是否禁用表单提交(页面刷新)
});
});
PHP验证脚本
<?php
if(isset($_POST['name'])){
$name = $_POST['name'];
if($name == 'sam')
$arr = array("status"=>'success','msg'=>'Taken');
else
$arr = array("status"=>'success','msg'=>'Available');
}
else
{
$arr = array("status"=>'error','msg'=>'Error');
}
echo json_encode($arr);
exit;
?>
您是否收到php脚本的响应?例如,您的已评论警报调用是否有结果?请尝试在POST请求中添加错误函数,并记录结果。像您的成功处理程序一样,除了使用error:function(jqXHR,textStatus,errorhown){console.log(jqXHR,textStatus,errorhown);}
可能这会让您了解POST失败的原因。@Jlange我在哪里检查日志..在大多数现代浏览器中按“F12”可以访问开发工具。然后转到“控制台”选项卡。
<?php
if(isset($_POST['name'])){
$name = $_POST['name'];
if($name == 'sam')
$arr = array("status"=>'success','msg'=>'Taken');
else
$arr = array("status"=>'success','msg'=>'Available');
}
else
{
$arr = array("status"=>'error','msg'=>'Error');
}
echo json_encode($arr);
exit;
?>