出于某种原因,我无法让我的JSON脚本处理if…Else语句。它将100%地处理else语句,即使值匹配也会跳过if部分。但是,当静态Html表单调用PHP脚本时,它可以完美地处理。什么好主意吗?jQuery脚本如下:
$("#action_button").click(function() {
var username = $("#username").val();
var password = $("#password").val();
var dataString = '&username=' + username + '&password=' + password;
if(username=='' || password=='') {
$('#success').fadeOut(400).hide();
$('#error').fadeOut(400).show();
} else {
$.ajax({
type: "POST",
dataType: "JSON",
url: "processing/logsig.php",
data: dataString,
json: {session_state: true},
success: function(data){
if(data.session_state == true) { // true means user is logged in.
$("#main1").fadeOut(400);
} else if(data.session_state == false) { // false means user is being registered.
$("#main1").hide();
$('#main1').load('views/dashboard.php').fadeIn(400);
}
}
});
}
});
Php脚本:<?php
header('Content-type:application/json');
session_start();
include("enc.php");
mysqlcon();
$email = mysql_real_escape_string(strip_tags($_POST["username"]));
$password = sha1($_POST["password"]);
$sql = "SELECT * FROM users WHERE username = '{$email}' AND password = '{$password}'";
$result = mysql_query($sql); // or exit("ERROR: " . mysql_error() . "<br>IN QUERY: " . $sql);
if (mysql_num_rows($result) > 0) {
$row = mysql_fetch_array($result);
$_SESSION["userid"] = $row['user_pid'];
$json1 = json_encode(array('session_state' => true));
echo $json1;
} else {
$userid_generator = uniqid(rand(), false);
mysql_query("INSERT INTO users (user_pid, email, password, datetime_registered, is_leader) VALUES ('$userid_generator', '{$email}', '{$password}', NOW(), 'no')");
$id = mysql_insert_id();
$leaders = mysql_query("SELECT * FROM users WHERE is_leader LIKE '%yes%'");
while($rows = mysql_fetch_array($leaders)) {
if ($rows['is_leader'] == 'yes') {
$leader_id = $rows['user_pid'];
mysql_query("INSERT IGNORE INTO friends (node1id, node2id, friends_since, friend_type)
VALUES('$leader_id', '$userid_generator', NOW(), 'full')");
}
$_SESSION["userid"] = $userid_generator;
}
$json2 = json_encode(array('session_state' => false));
echo $json2;
}
?>
在firebug中查看您的站点,POST参数没有正确发送。我正在看
password undefined
username undefined
进一步检查后,似乎您的两个输入都没有ID属性,并且
没有找到。var username = $("#username").val();
var password = $("#password").val();
这与JSON或PHP无关。请执行基本的调试步骤。如果有必要,把alert()
s粘在每条线上。