调用函数后没有响应数据

时间:2016-01-28 09:13:27

标签: javascript php

我有一个名为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控制台中,我得到:

  

此请求没有可用的响应数据。

我不知道出了什么问题,有人可以赐教我吗?

1 个答案:

答案 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();