我的一个表单中有这个javascript。 这是登录表单 我从表单本身获取URL 我正在使用API风格,(“我不确定我的概念是否正确”) 但我会附上代码
var formup = $('#loginfrom');
formup.submit(function () {
$.ajax({
type: formup.attr('method'),
url: formup.attr('action'),
data: formup.serialize(),
success: function (data) {
alert('you have successfuly logged in');
window.location = "profile.html";
}
});
return false;
});
这是我从api文件调用的登录函数
if(!mysql_fetch_array($result)){
return $res;
}
else
return $resc;
其中$ res返回“error”,$ resc返回“correct”
和我的api.php
if(!isset($function))
$resp['err'] = "Function: ".$action." does not exist";
else
$resp = $function($request);
当我输入正确的用户名和密码时,它工作正常,我会转到用户个人资料。
但是,如果我的用户名或密码不正确,我不知道如何处理 我不想被引导到个人资料
我确实认为从php返回应该做一些事情告诉javascript登录不起作用然后再做其他事情
请就此问题向我提供一些帮助,我将不胜感激。
答案 0 :(得分:1)
请求始终成功,因此,您必须检查data
变量的值以重定向到错误页面
...
success: function (data) {
if ( data == 'correct') {
alert('you have successfuly logged in');
window.location = "profile.html";
} else {
// handle error
}
}
...
答案 1 :(得分:0)
将您的登录代码更改为此
if(!mysql_fetch_array($result)){
echo 'failure'; die;
}
else {
echo 'success'; die;
}
将你的ajax成功改为
success: function (data) {
if (data == 'success') {
alert('you have successfuly logged in');
window.location = "profile.html";
} else {
alert('Login Failed');
}
}
答案 2 :(得分:0)
使用数据类型作为json从php获取返回值。请在下面的代码中查看我的建议。
$.ajax({
type: formup.attr('method'),
url: formup.attr('action'),
data: formup.serialize(),
dataType: 'json',
success: function (data) {
if(data.error == 0) {
alert('you have successfuly logged in');
window.location = "profile.html";
} else {
alert("error");
}
}
});
在你的php文件中,将$ res和$ resc转换为数组,然后再使用json_encode。 像这样,
if(!mysql_fetch_array($result)){
echo array('value'=>$res,'error'=>0);
}
else
echo array('value'=>$res,'error'=>1);
答案 3 :(得分:0)
您可以对数据执行某些操作,或者您可以让PHP返回401状态,如果您使用PHP返回的内容而不是401状态,那么您可以让JavaScript检查返回的文本:
var formup = $('#loginfrom');
formup.submit(function () {
$.ajax({
type: formup.attr('method'),
url: formup.attr('action'),
data: formup.serialize(),
success: function (data) {
console.log(data);
// check your console (press F12 in Chrome or Firefox with firebug plugin)
// do something if the data is valid.
window.location = "profile.html";
}
});
return false;
});
当PHP中的登录失败并且您想要返回401时(导致您的javascript成功函数不被调用,但您可能需要JS中的失败/错误函数。
header("HTTP/1.0 401 Unauthorized");
您需要在javaScript中添加失败回调,以便用户知道登录失败:
$.ajax({
...
success: function (data) {
...
},
error: function(){
//inform the user
}
});