ajax响应为空后JQuery无法工作
JQuery not working after null ajax responce
我有Jquery代码
$(document).ready(function(){
$('#login').click(
function () {
$.post('/profile/ajax/login', {
username: $('#username').val(),
password: $('#password').val(),
},
function (res) {
if (res != null) {
$.each(res, function (i, val) {
$('#login-error').html('<div class="alert alert-danger fade in"><a class="close" data-dismiss="alert" href="#">×</a>' + val + '!</div>');
return false;
});
} else {
location.reload();
}
},
'json'
);
}
);
}
并有PHP代码
if($_POST)
{
$username = $_POST['username'];
$password = $_POST['password'];
$post = Validation::factory($_POST);
$post->rule('username', 'not_empty');
$post->rule('password', 'not_empty');
if($post->check())
{
if(!Auth::instance()->login($username, $password, true))
{
echo json_encode(array('Неверный Логин или Пароль'));
}
}
else
{
$errors = $post->errors('validation');
echo json_encode($errors);
}
}
如果Ajax返回一些带有错误的文本(res!=null),Jquery将正常工作。如果Ajax返回时没有任何信息,则"else"块中不会发生任何事情。
我该如何解决这个问题?
您指定的数据类型是json,因此如果返回值为null,则不会对其进行处理。尝试更改数据类型或在php文件中以json格式返回错误:)
检查res != null
是问题所在。空数组无法与null
进行比较。更改条件以检查阵列长度:
if (res.length > 0) {
其次,如果提交的凭据格式有效且正确,PHP将不返回任何内容。这将导致jQuery error
处理程序而不是success
被激发,因为空白响应不能被解析为JSON。添加另一个返回空数组的else子句:
if(!Auth::instance()->login($username, $password, true)){
echo json_encode(array('Неверный Логин или Пароль'));
} else {
echo json_encode(array());
}
尝试将您的PHP代码更改为:
$result = null;
if($_POST)
{
$username = $_POST['username'];
$password = $_POST['password'];
$post = Validation::factory($_POST);
$post->rule('username', 'not_empty');
$post->rule('password', 'not_empty');
if($post->check())
{
if(!Auth::instance()->login($username, $password, true))
{
$result = array('Неверный Логин или Пароль');
}
}
else
{
$result = $post->errors('validation');
}
}
echo json_encode($result);
这将导致在所有可能的情况下都对结果进行json编码。
相关文章:
- 不正确的工作jquery插件bxslider与插件elevatezoom
- 更改图像src-dons't工作jquery/js
- event.prventDefault()不工作(jQuery实时)
- delay()不会'第二次工作jquery
- 如何工作 jQuery 就绪
- 几天后,昨天停止工作jQuery
- .click() 不再工作 jquery.
- 如何使工作jquery"“滑动”;在iPad上滚动
- 为什么不是't这个选择器正在工作(Jquery和Asp.net)
- Flexslider无法在html网站中工作(jQuery无法加载?)
- 点击,点击不工作?jquery
- 按钮在“加”和“减”之间切换,需要“点击”;只能在fa +上工作.jQuery
- 突出显示搜索列表不工作(jquery问题)
- 页眉内的Div /靠近页面顶部/在2次点击事件后不显示,而它的's页脚双胞胎工作- jquery
- 为什么css后台jQuery代码不工作jQuery设置多个css值
- .stop()不是't使用我的悬停,使快速移动工作-jQuery
- 自定义验证方法不工作- jQuery验证插件
- 数据表columnDefs不工作:jquery / javascript
- 工作jQuery代码赢得'不要在电话间隙跑步
- 我的Javascript代码不工作- Jquery选择器问题