我有一个名为login.php
的文件,在此文件中有一个框,用于填写从发送登录数据到服务器。现在,当用户按下登录按钮时,将触发此代码:
var postUrl = GlobalVariables.baseUrl + 'application/controllers/user.php/ajax_check_login';
var postData =
{
'username': $('#username').val(),
'password': $('#password').val()
};
$.post(postUrl, postData, function(response)
{
// Some stuff..
}, 'json');
postUrl
通过以下方式正确定价:
http://localhost/App_Name/application/controllers/user.php/ajax_check_login
现在我有一个自己的控制器列表,允许我管理网络应用程序。其中一个控制器是user.php
,您可以看到我调用ajax_check_login
函数。此函数检查从此请求传递的数据是否存在于数据库中且是否正确。这是内容:
public function ajax_check_login()
{
echo "Test?";
try
{
if(!isset($_POST['username']) || !isset($_POST['password']))
{
throw new Exception('Bad credentials!');
}
$this->check_login($_POST['username'], $_POST['password']);
if($user_data)
{
$output[] = array(
"some content..."
echo json_encode($output);
}
else
{
echo json_encode(AJAX_FAILURE);
}
}
catch(Exception $exc)
{
echo json_encode(array(
'Exception ' => array(exceptionToJavaScript($exc))
));
}
}
现在,在所有插入回声的顶部,只是为了测试是否打印。但没什么。在Chrome控制台中,我得到:
此请求没有可用的响应数据。
我不知道出了什么问题,有人可以赐教我吗?
答案 0 :(得分:0)
首先,您想查看服务器返回的内容,比如没有内容的HTTP200吗?或错误500.为什么我这样说是因为你的片段告诉你几乎没有变量/功能缺失。检查我的评论:
public function ajax_check_login()
{
echo "Test?";
try
{
if(!isset($_POST['username']) || !isset($_POST['password']))
{
throw new Exception('Bad credentials!');
}
$this->check_login($_POST['username'], $_POST['password']);
if($user_data) // $user_data is never defined in this function, and it's not a global variable
{
$output[] = array(
"some content..." // syntax error; here missing end parenthesis
echo json_encode($output);
}
else
{
echo json_encode(AJAX_FAILURE);
}
}
catch(Exception $exc)
{
echo json_encode(array(
'Exception ' => array(exceptionToJavaScript($exc)) // unknown function exceptionToJavaScript(); it could encounter fatal error
));
}
}
其次,我建议你发送标题来定义你发送JSON编码的内容,并在echo之后退出()。见例:
header('Content-type: application/json');
echo json_encode(/** return **/);
exit();