PHP到JQuery:json_编码不工作

PHP到JQuery:json_编码不工作,php,jquery,getjson,json,Php,Jquery,Getjson,Json,在过去的几天里,我一直在努力解决这个问题。事实上,由于我对这一切都不熟悉,我似乎一直在努力想办法。不管怎样,请回答我的问题 我试图用PHP编码一个数组,并使用JSON在JQuery中检索它,代码如下: “core/init.php”中包含的函数: function output_errors($errors) { echo json_encode($errors); } login.php: <?php include 'core/init.php'; logged_in_re

在过去的几天里,我一直在努力解决这个问题。事实上,由于我对这一切都不熟悉,我似乎一直在努力想办法。不管怎样,请回答我的问题

我试图用PHP编码一个数组,并使用JSON在JQuery中检索它,代码如下:

“core/init.php”中包含的函数:

function output_errors($errors) {
    echo json_encode($errors);
}
login.php:

<?php

include 'core/init.php';
logged_in_redirect();

if (empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];

if (empty($username) === true || empty($password) === true) {
    $errors[] = 'Please enter a username and password.';
} else if (user_exists($username) === false) {
    $errors[] = 'We can\'t find that username.  Have you registered?';
} else if (user_active($username) === false) {
    $errors[] = 'You haven\'t activated your account.';
} else {
    $login = login($username, $password);
    if ($login === false) {
        $errors[] = 'That username/password combination is incorrect.';
    } 
    else {
    //start session
        $_SESSION['user_id'] = $login;
    //redirect to home.
        header('Location: index.php');
        exit();
    }
}
} else {
header('Location: index.php');
}

include 'includes/overall/header.php';

if (empty($errors) === false) {

?>

<h2>We tried to log you in but...</h2>

<?php

output_errors($errors);

}

include 'includes/overall/footer.php';

?>
我在本地工作,并已将其用于测试文件:

test.php:

<?php

function output_errors($errors) {
echo json_encode($errors);
}

output_errors($errors);

?>
用户_活动:

function user_active($username) {
   $username = sanitize($username);
   $query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'AND `active` = 1");
   return (mysql_result($query,0) == 1) ? true : false;     
}

E

您的问题可能是在返回json对象之前需要设置头

function output_errors($errors) {
    header('Content-Type: application/json');
    echo json_encode($errors);
}

您的问题可能是在返回json对象之前需要设置头

function output_errors($errors) {
    header('Content-Type: application/json');
    echo json_encode($errors);
}

最后,我明白了。bozdoz和DCoder证明是对的。我没有意识到php会回应整个页面(新手错误)。我的印象是,它只会回显json_编码的数组

对于遇到类似问题的任何人,请确保您使用的文件只回显所需的结果


谢谢大家的帮助。

终于找到了答案。bozdoz和DCoder证明是对的。我没有意识到php会回应整个页面(新手错误)。我的印象是,它只会回显json_编码的数组

对于遇到类似问题的任何人,请确保您使用的文件只回显所需的结果


感谢大家的帮助。

可能需要打印而不是echo;可能需要将内容类型为javascript对象的头显式设置为javascript对象。我不知道哪段代码是index.php。你能给他们贴上更好的标签吗?我用print\r($errors)运行了它,得到了这个:Array([0]=>我们找不到那个用户名。你注册了吗?),而不是[“我们找不到那个用户名。你注册了吗?”]。php不在上面,php来自一个登录页面,我将尝试更新标签以使其更清晰。另外,添加标题似乎也不起作用。我不明白你想做什么。您正在尝试警告整个HTML页面吗<代码>$.getJSON('login.php',函数(错误){logErrors(错误);})应该提醒整个页面。用户\存在于何处以及用户\活动功能在何处?想想你在做什么。您要求jQuery获取JSON,但PHP脚本输出由HTML包围的JSON。您希望jQuery自动计算JSON的开始和结束位置吗?可能需要执行print_r()而不是echo;可能需要将内容类型为javascript对象的头显式设置为javascript对象。我不知道哪段代码是index.php。你能给他们贴上更好的标签吗?我用print\r($errors)运行了它,得到了这个:Array([0]=>我们找不到那个用户名。你注册了吗?),而不是[“我们找不到那个用户名。你注册了吗?”]。php不在上面,php来自一个登录页面,我将尝试更新标签以使其更清晰。另外,添加标题似乎也不起作用。我不明白你想做什么。您正在尝试警告整个HTML页面吗<代码>$.getJSON('login.php',函数(错误){logErrors(错误);})应该提醒整个页面。用户\存在于何处以及用户\活动功能在何处?想想你在做什么。您要求jQuery获取JSON,但PHP脚本输出由HTML包围的JSON。您希望jQuery自动计算JSON的开始和结束位置吗?似乎仍然不起作用。早些时候我尝试了一下,因为我在寻找解决方案的过程中也遇到了这一点。我不确定这是否有帮助,但测试文件似乎不需要它来工作。似乎仍然不工作。我之前尝试过它,因为我在搜索解决方案时也遇到了它。我不确定这是否有帮助,但测试文件似乎不需要它来工作。
function output_errors($errors) {
    header('Content-Type: application/json');
    echo json_encode($errors);
}