我不知道我做错了什么..
我有2个文件: 的login.php 的index.php
<script type="text/javascript">
$(document).ready(function(){
$('#btnLogin').bind('click', loginToWebsite);
});
function loginToWebsite(){
$.ajax({
url: "login.php",
type: "POST",
data: "username=" + $("#username").val()+"&password=" + $("#password").val(),
datatype:"json",
success: function(status)
{
if(status.success == false)
{
$("#loginform").effect("shake", {times:2}, 100);
$("#login_message")
.attr('class', 'ui-state-error')
.html('<strong>ERROR</strong>: Your details were incorrect.<br />');
}
else {
$("#login_message")
.attr('class', 'ui-state-highlight')
.html('<strong>PERFECT</strong>: You may proceed. Good times.<br />');
}
}
});
}
</script>
login.php gile看起来就是这样:
<?php
if (isset($_POST['username'])&& isset($_POST['password']))
{
if (login ($_POST['username'], $_POST['password'])){
$data = array("success" => true);
echo json_encode($data);
}
else {
$data = array("success" => false);
echo json_encode($data);
}
}?>
但是我从login.php(通过json)获得了未定义的
如果我尝试提醒(status.success),则会打印未定义的
我可以看到用户名和密码发送到login.php页面的标题。
PHP函数 login()在别处实现(并返回true或false)
答案 0 :(得分:2)
似乎通过变量“status”传递给javascript的值是一个字符串。所以你必须将字符串转换为json对象。要将字符串转换为json对象,请使用以下脚本。使用最新的jquery库,因为较旧的jquery库使用不同的函数将字符串转换为json。
var obj = jQuery.parseJSON(status); alert(obj.success);
答案 1 :(得分:0)
我猜你的php脚本输出中有一些不好的东西,它不能被解析为json。
尝试使用一些调试Web代理(例如http://www.charlesproxy.com/,有免费演示)
添加控制台跟踪以查看数据
成功:功能(状态) { 的console.log(状态); // ...功能体 }
答案 2 :(得分:0)
您在php文件中的代码不正确
if login = false
{
$data['success'] = false;
echo json_encode($data);
}
else {
$data['success'] = true;
echo json_encode($data);
}