使用ajax$.POST()查看是否使用了用户名
See if username is taken or not, using ajax $.POST()?
这是检查返回值是否为1:的块
} else if (validateUsername(username.val()) == 1) {
errors.html("That username already exists! Please use another.<span id='close'>X</span>");
errors.fadeIn("slow");
username.css("border", "solid 2px red");
}
如果是,则用户名存在。。
现在让我们来做ajax工作。
function validateUsername(username) {
$.post("js/ajax/ajax.php", { validateUsername : username }, function(data) {
return data;
});
}
这将向ajax发送一个请求,并用响应填充var数据。
if (isset($_POST['validateUsername']))
{
echo 1;
}
这是将发送响应的ajax,目前基本上是int 1,用于检查。
但是,我总是弄不清楚。我的意思是,fireBug确实说"request=1",但看起来if语句不起作用。
如果我只返回1;如果不使用ajax,它可以手动运行。
它为什么这么做?
Ajax是异步的,所以当您在这里返回数据时:
function validateUsername(username) {
$.post("js/ajax/ajax.php", { validateUsername : username }, function(data) {
return data;
});
}
试着把它拿到这里:
validateUsername(username.val()) == 1
它不起作用,因为ajax调用尚未完成(返回仅来自内部函数)
相反,你应该这样做:
function validateUsername(username) {
return $.post("js/ajax/ajax.php", { validateUsername : username });
}
validateUsername(username.val()).done(function(data) {
if ($.trim(data) === 1) {
errors.html("That username already exists! Please use another.<span id='close'>X</span>");
errors.fadeIn("slow");
username.css("border", "solid 2px red");
}
});
validateUsername()
在ajax调用完成之前返回(没有返回值,这就是您看到未定义的原因)。
处理这一问题最优雅的方法可能是重构到return $.ajax...
并处理返回的Deferred对象。
任何依赖于ajax调用结果的东西都必须在成功处理程序中,由成功处理程序调用,或者以这样的方式定义,即它只在成功处理后运行。
相关文章:
- 如何使用jquery确定用户是否年满18岁
- javascript跨浏览器确定用户是否滚动到页面底部
- 是否可以仅通过jQuery将图像替换为用户动态选择的另一个图像
- javascript移动交叉浏览器确定用户是否滚动到页面底部
- 如何检查用户是否使用$routeChangeStart登录angularjs
- React Native当前是否支持访问用户'的通讯簿
- 如何检测用户是否在同一会话中打开了多个窗口或选项卡
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 使用Angular存储用户以前是否选中过复选框,然后再调用它的最佳方式是什么
- 询问用户是否要打开地理位置
- 检测用户是否具有打印功能
- 检查用户是否在Orchard CMS中获得授权
- HTML.如何检查用户是否在表单中输入了文本
- 如何检查用户是否开始关注
- 检查用户是否正在访问纯根url
- 检测用户是否有从其重定向的意图's页
- 如何发现用户是否使用jQuery滚动到HTML容器的末尾
- 使用jQuery检测用户是否退出全屏视频
- 检查用户是否具有角色分析云代码
- 使用boostrap检查元素是否用户可见