使用json_encode

时间:2017-08-02 01:46:58

标签: php mysql json

我很遗憾为什么我无法通过数据传递 javascript

jQuery.extend({
getValues: function(url) {
    var result = null;
    $.ajax({
    url: url,
    type: 'get',
    dataType: 'json',
    async: false,
    success: function(data) {

        result = JSON.stringify(data);

    }
return result;

我对js部分没有问题,问题是php

$sql = "SELECT name, score FROM scores ORDER BY score DESC LIMIT 10 ";
$result = mysqli_query($conn1, $sql);
if (mysqli_num_rows($result) > 0) {
$data = array(); 
while ($row = mysqli_fetch_assoc($result)) {
    $data[] = array("name"=>$row['name'], "score"=>$row['score']);
    $post_data = json_encode(array($data));
}
echo $post_data;
}

回显帖子数据没有提供任何内容,如果我回显内部数据,而循环我得到一个结果为每次迭代的while循环。如果我print_r数据数组我也得到某种结果。我的问题是我做错了什么? 谢谢你的答案,我确实从循环中发布的数据确实很差,但真正的问题是其中一个名字是俄语字母,数据库的结果不是utf-8

3 个答案:

答案 0 :(得分:1)

在while循环后写$post_data = json_encode(array($data));,否则你将在每次迭代时覆盖$post_data

while ($row = mysqli_fetch_assoc($result)) {
    $data[] = array("name"=>$row['name'], "score"=>$row['score']);
}
$post_data = json_encode(array($data));
echo $post_data;

我不希望这会解决你的核心问题,但你确实问过“我做错了什么”。

请告诉我们在循环之后var_export($data);之前使用json_encode()获得的内容。我们需要看看那些数据&结构看起来像。

答案 1 :(得分:0)

更改

result = JSON.stringify(data);

有关:

result = JSON.parse(data);

答案 2 :(得分:0)

使用json_last_error我发现我无法编码因为数据不是utf-8