フォームデータをphpファイルに送信し、データベースに対してチェックして応答を返すjquery ajax関数があります。しかし、私の成功関数は実行されていません。代わりに、エラー関数を介して応答が返されます。
以下は私のlogin.jsコードです:
$(document).ready(function(){
$("form#loginForm").submit(function() { // loginForm is submitted
var username = $('#username').attr('value'); // get username
var password = $('#password').attr('value'); // get password
if (username && password) { // values are not empty
$.ajax({
type: "POST",
url: "url", // URL of the Php script
contentType: "application/json; charset=utf-8",
dataType: "json", //expected from server in response
// send username and password to the Php script
data: "username=" + username + "&password=" + password,
error: function(XMLHttpRequest, textStatus, errorThrown) { // script call was *not* successful
$('div#loginResult').text("responseText: " + XMLHttpRequest.responseText
+ ", textStatus: " + textStatus
+ ", errorThrown: " + errorThrown);
$('div#loginResult').addClass("error");
},
success: function(data){ //script was successful, data contains response from mysql database
if (data.error) { // login was not successful
$('div#loginResult').text("data.error: " + data.error);
$('div#loginResult').addClass("error");
} // if
else { // login was successful
$('form#loginForm').hide();
$('div#loginResult').text("data.success: " + data.success);
$('div#loginResult').addClass("success");
} //else
} // success
}); // ajax
} // if
else {
$('div#loginResult').text("enter username and password");
$('div#loginResult').addClass("error");
} // else
$('div#loginResult').fadeIn();
return false;
});
});
これは私の Login.php コードです:
<?php
$username = $_POST["username"];
$password = $_POST["password"];
$dbhost = '*****';
$dbuser = '*****';
$dbpass = '*****';
$conn = mysql_connect($dbhost, $dbuser, $dbpass); // connect to server
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
echo 'Connected to database successfully,';
mysql_select_db('sl493',$conn); //pick sl493 database
$result = mysql_query("SELECT *
FROM metauser
WHERE metauser.username = '$username'
AND metauser.password = '$password'") or die(mysql_error()); //select data from metauser table
$row = mysql_fetch_assoc($result);
if($row['username'] == $username) //If username and password not accepted
{$result = 'true login';
$arr = array('success' => "login is successful");
echo json_encode($arr);}
else //if username and password are not accepted
{$result = 'login failed';
$arr = array('error' => "username or password is wrong");
echo json_encode($arr);}
?>
現在、入力した資格情報が正しいか間違っているかに関係なく、次の応答が返されます。
responseText: データベースに正常に接続されました,{"success":"ログインに成功しました"} , textStatus: parsererror, errorThrown: 無効な JSON: データベースに正常に接続されました,{"success":"ログインに成功しました"} http://i. imgur.com/n1nZ2ac.jpg
「データベースに正常に接続されました」を返します。これは、login.php に正常に移動したことを意味しますが、ajax:error の一部である responseText も返します。関数が正常に実行されたため、移動すべきではありません。HALP ?