-1

編集:問題は、フレームワークを使用しているときに関数を呼び出した可能性がある方法で関数を呼び出そうとしたことです。また、このフレームワークを使用していないなど、非常に重要なことについても言及しませんでした。

私の同僚が指摘したように、これはここで役立つはずです。http://www.php.net/manual/en/language.oop5.basic.php

問題: 他のユーザーから提案された多くの方法を試しましたが、json は依然として NULL または空白を返します。これが私のコードで、コメントアウトした行は、私が試したが失敗したものです。以前に私のような投稿があったことはわかっていますが、どれもうまくいきませんでした。よろしくお願いします。

編集:私はクロムを使用しています.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

私が質問を理解し、フレームワークを使用したことを指定しなかった限り、AJAXURLを介して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 に答える