3

私はAJAXにかなり慣れていません。簡単なログイン スクリプトを機能させようとしています。これはjQuery 1.6.4を使用しています。以下の AJAX では、ユーザーがボタンをクリックすると、電子メール アドレスとパスワードが login.php に送信されます。それはすべてうまくいくようです。問題は、成功関数にあります。電子メールとパスワードが正しい場合、true が返されます。機能しない場合は false を返す必要があります。Firebug を使用すると、console.log で動作することがわかります。alert(response); と書いても正常に動作します。ただし、response が true に等しい場合でも、条件は常に false と評価されます。if(response=="true")変数を関数の外に置いて、 と の両方を試しましたが if(response==="true")、他のいくつかのことは成功しませんでした。これを修正する方法について誰かアイデアがありますか?

助けやアイデアをありがとう、ジェイソン。

AJAX:

$("#firstpage").live('pageinit', function (evt) {
$('#button').click(function(){       
var $form = $('#login'),
$inputs = $form.find("input"),
serializedData = $form.serialize();
$.ajax({
  type: 'POST',
  url: 'php/login.php',
  data: serializedData,
  success: function(response){
    console.log("Response: "+response);
    if(response=="true") 
    {
$('#firstpage #wrong').text("Login script is working");
} else {
$('#firstpage #wrong').text("Your email and password combination did not match.");
}

    },      
  dataType: 'json'
});
});  
});

役に立ったら、これは私の login.php スクリプトです。

$email = $_POST['email'];
$password = $_POST['password'];
require_once("DB.php");
$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!"); 
mysql_select_db($db) or die ("Unable to select database!"); 

$query = "SELECT * FROM member WHERE email='$email' AND password='".md5($_POST['password'])."'";
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error()); 

$num_rows = mysql_num_rows($result);
if($num_rows>0){
$output = true;
} else {
$output = false;
}
echo json_encode($output);
4

2 に答える 2

1

「dataType: 'json'」があるため、レスポンスはオブジェクトです。jQuery は、responseText を JSON に変換しようとします。サーバーが返したデータを確認する必要がある場合は、使用してみてください

if (response === true) {

}

または単に

if (response) {

}

または、データ型 'json' を削除して、jQuery に文字列を返すようにします。

于 2012-07-04T17:02:22.293 に答える
0

完全等号を含む引用符は使用しないでください===。使用する

if (response === true)

PHP スクリプトはtrueではなくを返すため"true"です。

私は PHP に熱心ではありませんが、true を囲む引用符を削除してみてください。

于 2012-07-04T17:01:11.063 に答える