我想使用Jquery获取json结果。现在我总是得到'未定义'的结果。我可以使用
获取json打印alert(data);
但总是使用
返回'undefined'alert(data.first_name);
Jquery客户端代码
$.post(
"/modules/services/userlogincheck_new.php",
{
dataType: 'jsonp',
action : "checkpassword",
email : email,
password : password
},
function(data) {
alert(data.first_name);
}
);
PHP服务器端
if ($_POST['action'] == "checkpassword") {
$query = "select * from users where email='" . $email . "'";
$result = mysql_query($query, $forumdbcon) or die('Error, insert query failed');
while ($row = mysql_fetch_assoc($result)) {
if (($row['password'] == md5($password))) {
$arr = array("response" => 1, "first_name" => $row['first_name'], "last_name" => $row['last_name'], "address" => $row['address1']);
echo json_encode($arr);
} else {
$arr = array("response" => 2);
echo json_encode($arr);
}
}
}
答案 0 :(得分:1)
从服务器发送的响应是JSON而不是JSONP。将dataType更改为JSON。
答案 1 :(得分:1)
您不需要jsonp
,因为这是在服务器上。 尝试将 dataType: 'jsonp'
更改为dataType: 'json'
。
您正在使用$.post
,所以您只是将dataType
发送给PHP,而不需要执行任何操作,您需要告诉$.post
使用JSON。
$.post("/modules/services/userlogincheck_new.php", {
action : "checkpassword",
email : email,
password : password
}, function(data) {
alert(data.first_name);
}, 'json;);
答案 2 :(得分:1)
试试这个:
$.post("/modules/services/userlogincheck_new.php", {
action : "checkpassword",
email : email,
password : password
}, function(data) {
alert(data.first_name);
},'json');
答案 3 :(得分:1)
“非主题”:您的代码 可能极易受到SQL Injection 的攻击。如果我将';DROP TABLE users; --
作为我的电子邮件地址发送,您就会遇到麻烦。
关于主题:
$.post(
"/modules/services/userlogincheck_new.php",
{
action : "checkpassword",
email : email,
password : password
},
function(data) {
alert(data.first_name);
},
'json'
);
$.post()
需要明确设置数据类型。
答案 4 :(得分:0)
您正在使用jsonp
,因此您需要根据自动创建的jsonp
参数给出的参数将输出包装在函数调用中。
echo $_GET['jsonp'] . '(' . json_encode($arr) . ');';
或者,只需使用普通的JSON。