-1

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

正如我的同事所指出的,这里应该可以提供帮助。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");
    //  });
4

3 回答 3

1

据我了解这个问题,并且您没有指定您使用过任何框架,您试图通过 AJAX url 调用 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 ............

}
于 2012-09-12T06:03:46.347 回答
1

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

于 2012-09-12T02:52:57.803 回答
0

编辑:

AJAX 作为 get 发送也可能导致 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 的原因是正在默默地生成一个错误。

尝试在查询后添加 or die():

$query = mysql_query("select * from tbl_user where username = $username and password = $hashed") or die('Query error');
于 2012-09-12T02:40:36.380 回答