ajax php json返回null

时间:2012-09-12 02:37:04

标签: php ajax json

编辑:问题是我试图以使用框架时调用函数的方式调用函数。而且,我甚至懒得提一些非常重要的事情,例如我没有使用这个框架。

正如我的同事所指出的,这里应该能够提供帮助。 http://www.php.net/manual/en/language.oop5.basic.php

问题: 我尝试了其他用户建议的多种方式,但json仍然返回NULL或空白。这是我的代码,我已经注释掉的那些是我尝试但失败的那些。现在我知道曾经有过像我这样的帖子,但没有一个对我有用。提前谢谢大家。

编辑:我正在使用chrome,当我使用F12时,转到网络,我可以看到访问函数login()并且我传递的数据也在那里。但是,当我尝试打印字符串和/或die()/ exit()时,响应仍然给我'此请求没有数据可用'。这是什么意思?

我最初在没有进行任何查询的情况下对此进行了测试,但仍然返回NULL。我想我的问题得到了投票,因为我的查询似乎出现了错误,所以我只想清除它。我已经处理了这个问题2天了,我已经尝试了很多东西,我确信这不是查询。

    public static function login()
{
    //      header("Content-Type: application/json");
    //      header("Content-Type: text/javascript");

    $response->msg  = '';
    $username = $_POST['username'];
    $password = $_POST['password'];

    $hashed = hash('md5', $password);
    $query = mysql_query("select * from tbl_user where username = '$username' and password = '$hashed'");
    $result = mysql_fetch_object($query);

    if(mysql_num_rows($result) > 0)
    {
        $response->msg  = 1;
        $response->username = $username;

    //          $response['msg']  = 1;
    //          $response['username'] = $username;

        echo json_encode($response);
    }
    else
    {
    //          $response['msg']  = 0;
        $response->msg  = 0;
        echo json_encode($username);
    }
}

的Javascript

$("#btn_submit").click(function(){

    var username = $("#txtusername").val();
    var password = $("#mypassword").val();

    $.ajax({
        url: base_url + 'includes/main.php/login',
        data: { username: username,  password: password },
                    type: 'post',
    //          async:false,
        dataType: 'json',
        success: function(data)
        {
            console.log(data);
        }
    });
});


    //  $('#btn_submit').click(function() {
    //      var username = $("#txtusername").val();
    //      var password = $("#mypassword").val();
    //      
    //      $.getJSON(base_url + 'includes/main.php/login', 
    //          { username: username,  password: password },
    //      function(json) {
    //          console.log(json);
    //      });
    //  });


    //  $('#btn_submit').click(function() {
    //      var username = $("#txtusername").val();
    //      var password = $("#mypassword").val();
    //
    //      $.post(base_url + 'includes/main.php/login', 
    //          {username: username,  password: password}, 
    //      function(r) {
    //          console.log(r);
    //      }, "json");
    //  });

3 个答案:

答案 0 :(得分:1)

我认为这不是关于json的问题。你的代码输出没有任何可能是因为一个错误,并且一般不会通过php报告数据库错误,endyourif的解决方案应该可以解决你的问题。

答案 1 :(得分:1)

据我所知,你并没有指定你使用过任何框架,你试图通过AJAX网址调用php方法

如果login()是控制器方法

,则保留此选项
url: base_url + 'includes/main.php/login',

但你不能这样做,试试以下

在javascript中

$("#btn_submit").click(function(){

    var username = $("#txtusername").val();
    var password = $("#mypassword").val();

    $.ajax({
        url: base_url + 'includes/main.php',
        data: { action:'login', username: username,  password: password },
        type: 'post',
        dataType: 'json',
        success: function(data)
        {
            console.log(data);
        }
    });
    return false;
});

在php中

if(isset($_POST['action']) && $_POST['action'] == 'login') {
    login();
}

function login()
{
    header("Content-Type: application/json");

    $response->msg  = '';
    $username = $_POST['username'];
    $password = $_POST['password'];

    // Do the rest ............

}

答案 2 :(得分:0)

编辑:

也可能是AJAX因为导致PHP脚本失败而被发送的问题:

$.ajax({
    url: base_url + 'includes/main.php/login',
    data: { username: username,  password: password },
//          async:false,
    type: 'post',
    dataType: 'json',
    success: function(data)
    {
        console.log(data);
    }
});

您的查询中可能出现错误:

    $query = mysql_query("select * from tbl_user where username = $username and password = $hashed");

$ username和$ password需要用单引号括起来:

$query = mysql_query("select * from tbl_user where username = '$username' and password = '$hashed'");

我猜你得到null的原因是一个错误正在静默生成。

尝试在查询后添加或者死亡():

$query = mysql_query("select * from tbl_user where username = $username and password = $hashed") or die('Query error');