jQuery AJAX与PHP通过JSON返回(登录表单)

时间:2012-03-13 19:25:46

标签: php jquery ajax json

我不知道我做错了什么..

我有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)

3 个答案:

答案 0 :(得分:2)

似乎通过变量“status”传递给javascript的值是一个字符串。所以你必须将字符串转换为json对象。要将字符串转换为json对象,请使用以下脚本。使用最新的jquery库,因为较旧的jquery库使用不同的函数将字符串转换为json。


    var obj = jQuery.parseJSON(status);
    alert(obj.success);

答案 1 :(得分:0)

我猜你的php脚本输出中有一些不好的东西,它不能被解析为json。

  1. 尝试使用一些调试Web代理(例如http://www.charlesproxy.com/,有免费演示)

  2. 添加控制台跟踪以查看数据

    成功:功能(状态) {      的console.log(状态);      // ...功能体 }

答案 2 :(得分:0)

您在php文件中的代码不正确

    if login = false 
{
$data['success'] = false;
echo json_encode($data);
}
else {
$data['success'] = true;
echo json_encode($data);
}