1

私はすでにこの質問をしたことを知っていますが、コードで何か間違ったことをしています。私は JSON を使用する必要があることを知っています。いくつかのページを読んだ後、理論を理解しましたが、どういうわけかそれを機能させることができません。 JSON で技術的な問題を解決したらすぐに):

$(document).on('pageinit',function(){
$("#login").click(function(){

username=$("#usr").val();
password=$("#psw").val();
$.ajax({
type: "POST",
url: "http://imes.**********.com/php/login_check.php",
data: "name="+username+"&pwd="+password,
success: function(html){
//in case of success
if(html=='true')
{
var usr = console.log(data.usr);
var psw = console.log(data.psw);
$.cookie('usr', usr);
$.cookie('psw', psw);
$("#login_message").html("Logged in, congratulation.");
$.mobile.changePage("http://imes.**********.com/userpanel.php");
}
//in case of error
else
{
$("#login_message").html("Wrong username or password");
}
},
beforeSend: function() { $.mobile.showPageLoadingMsg(); }, //Show spinner
complete: function() { $.mobile.hidePageLoadingMsg() }, //Hide spinner
});
return false;
});

そして私のphp:

<?php
session_start();
$username = $_POST['name'];
$password = $_POST['pwd'];
include('mysql_connection.php');
mysql_select_db("jzperson_imesUsers", $con);
$res1 = mysql_query("SELECT * FROM temp_login WHERE username='$username' AND password='$password'");
$num_row = mysql_num_rows($res1);
$res2 = mysql_fetch_array($res1);
if( $num_row == 1 ) {
$arr = array('usr' => $username, 'psw' => $password);
echo json_encode($arr);
echo 'true';
}
else{
echo 'false';
}
?>
4

3 に答える 3

1

これが私がすることです(PHP)。最初に応答配列を設定します。デフォルトは successFALSEです。

$arr = array('success' => FALSE);

次に、成功すると条件が上書きされます。

if( $num_row == 1 ) 
{
    $arr = array('success' => TRUE, 'usr' => $username, 'psw' => $password);
}

最後に、スクリプトの最後で結果を JSON エンコード データとして返します。

echo json_encode($arr);
exit();

jQueryにも次の変更を加えます。

$.ajax({
    type: "POST",
    url: "http://imes.**********.com/php/login_check.php",
    data: "name="+username+"&pwd="+password,
    dataType: 'json', // let's it know the response will be JSON formatted
    success: function(json){
        if (json.success === true){
            // do whatever you want here
        }
});

ただし、ユーザーのパスワードをフロントエンドに渡してはいけません。
その必要はありません。

于 2013-01-23T19:26:34.053 に答える
1

出力は有効な json ではありません。json の後に true または false をエコーすると、無効になります。json データに成功メッセージを挿入する必要があります。

if( $num_row == 1 ) {
    $arr = array('usr' => $username, 'psw' => $password);
    echo json_encode(array('data'=>$arr, 'success'=>true);
    //echo 'true';
}
else{
    echo json_encode(array('success'=>false);
} 

次に、ajax成功コールバックをチェックインします

success: function(json){
//in case of success
if(json.success){
    var usr = json.data.usr;
    ...
}
else{
    ...
}

また、適切にエンコードされるように、パラメーターをオブジェクトとしてデータに渡す必要があります。

data: {"name":username,"pwd":password},
于 2013-01-23T19:27:13.143 に答える
0

それが役立つ場合、JSON は基本的に JS の変数定義の右側です。

var myvar = ....;
            ^^^^---- basically JSON

やってるから

echo json_encode($var);
echo 'true';

PHP コードで、クライアント側からどのように見えるかを検討してください。

var myvar = 'somestring'true;
                        ^^^^---syntax error

JS コードの AJAX 呼び出しで使用するために JSON を出力している場合、サーバーが応答として出力できるのはJSONテキストだけです。それ以外の場合は、単に json 文字列を何らかの形で破壊し、無効にします。

于 2013-01-23T19:53:48.277 に答える