使用JSON格式的PHP,JQuery和AJAX从数据库中获取数据

时间:2015-04-30 10:41:15

标签: javascript php jquery ajax json

我无法从数据库中获取数据。我的目标是从我的数据库中获取所有组并以JSON(在警告框或其他任何方式)中返回它们。

现在它不会转换为JSON,我从ajax调用得到了奇怪的响应文本。如果您还需要其他任何东西来解决这个问题,请不要犹豫。

这就是我所做的。

PHP

$servername = "redacted";
$username = "redacted";
$password = "redacted";
$dbname = "redacted";

if(isset($_POST['action']) && !empty($_POST['action'])) {
    $action = $_POST['action'];
    switch($action) {
        case 'getGroups' : getAllGroups();break;
    }
}

function getAllGroups() {

    $mysqli = new mysqli($servername, $username, $password, $dbname);

    $query = $mysqli->query("SELECT * FROM groups");

    while($row = $query->fetch_object()) {
        $result[] = $row;
    }

    echo "{\"results\":";
    echo json_encode($result);
    echo "}";

    $mysqli->close();
 }

JS

function getPosts() {
    $.ajax({
        url: 'functions.php',
        data: {action: 'getGroups'},
        type: 'post',
        success: function(output) {
            var result = JSON.parse(output);
            result = result.resultaten;
            alert(result);
        }
    });
}

getPosts();

提前致谢, Mistergrave。

3 个答案:

答案 0 :(得分:1)

无需额外的echo。试试 -

echo json_encode(array('results' => $result));

而不是 -

echo "{\"results\":";
echo json_encode($result);
echo "}";

无需 - if(isset($_POST['action']) && !empty($_POST['action'])) {

if(!empty($_POST['action'])) { - 全力以赴。

首先定义$result

$result = array();
while($row = $query->fetch_object()) {
    $result[] = $row;
}

答案 1 :(得分:1)

好的,我设法解决了一切。显然,php函数无法找到我的凭据登录到数据库服务器,因为我在php文件上定义了它们(并且由于javascript只执行了该函数,因此这些凭据未定义)。

解决方案:

我只是在每个函数的开头复制粘贴凭证,以便定义这些凭据。和tadaah!它起作用了:)。

<小时/> 现在我意识到为什么responseText充满了表,因为它开始返回有关连接的错误表。

我希望我的解释能帮助其他有这个问题的人。

干杯,感谢所有有用的答案,
Mistergrave。

答案 2 :(得分:0)

使用

echo json_encode(array('result'=>$result));

因为它将数组作为参数。查看here

请注意: 如果确定要返回json数据,请使用dataType:json,这样就不需要JSON.parse(output)