使用ajax,jquery,json返回数据的值

时间:2012-06-21 22:27:37

标签: php jquery mysql ajax json

请你帮我这个吗?我是编程的初学者,所以如果这是一个愚蠢的问题,请耐心等待我。谢谢。

我的index.php页面包含登录表单(用户名,密码)和login.php这部分代码:

<? if(!$_POST['username'] || !$_POST['password']){
$data['msg'] = 'All fields have to be filled!';
$data['success'] = false;}else{


mysql_query("   INSERT INTO log_access(user,ip,datetime)
                            VALUES(
                            '".$_POST['username']."',
                            '".$_SERVER['REMOTE_ADDR']."',
                            NOW()
                            )");

$row = mysql_fetch_assoc(mysql_query("SELECT id,login FROM users WHERE login='".$username."' AND pwd='".md5($password)."'"));

if($row['login'])
{
    $_SESSION['login'] = $row['login'];
    $_SESSION['id'] = $row['id'];

    $data['success'] = true;
    $data['redirect'] = "index.php";    
}
else 
{
    $data['success'] = false;
    $data['msg']='Wrong username or password!';
}}echo json_encode($data);?>

如果我在用户名或/和密码中发送空字段,login.php将返回$ data。但是如果我发送填充字段,则没有数据返回index.php。 我在index.php中有以下内容:

<script> 
    $(document).ready(function() 
            { 
                $('#frmLogin').submit(function() 
                { 
                    $.post('/scripts/login.php',{username: $('[name=username]').val(), password: $('[name=password]').val()}, function(data)
                        {
                            if(data.success)
                            {
                                $('#login-msg').html("Logged");
                            }
                            else
                            {
                                $('#login-msg').html(data.msg);
                            }
                        }
                        ,'json');
            return false; 
        }); 
            }); 
</script> 

如果我在第一个条件或之前(在login.php中)放置任何内容,我会遇到同样的问题。 我不知道,我做错了什么:(

感谢您的帮助! 挖砂

修改 解决了! 我从登录脚本与DB连接不良。初学者错了。感谢所有回复。

1 个答案:

答案 0 :(得分:2)

您可以查看Firebug的控制台,看看POST是否发生,响应代码是200吗?您还可以检查正在检索的响应。

尝试使用以下内容调用test.php:

<?
 if(!$_POST['username'] || !$_POST['password']){
$data['msg'] = 'All fields have to be filled!';
$data['success'] = false;
}else{
$data['success'] = true;
$data['redirect'] = "index.php";  
echo json_encode($_POST);
}
?>

还要检查是否通过

正确传递了用户名和密码
alert( $('[name=username]').val() + | + $('[name=password]).val()); 

高于$ .post。

我通过硬编码用户名和密码检查了你的js,它们工作正常。 分裂和征服通常是一个好主意。对login.php页面的输入进行硬编码,并在其工作后首先运行它,然后将$ _POST参数作为输入。这样你就可以防止很多问题。

 ****Important Please ESCAPE ALL POST OR GET VARIABLES FOR MYSQL INSERT.
   Otherwise your scripts are vulnerable to SQL injections.
    ex: mysql_real_escape_string($_POST['username']);
    mysql_real_escape_string($_POST['password']);
Please ignore if you are already doing this!