1

我从 ajax 调用中得到这个

{"id":"381120774951940096","time":"Posted 0 minutes and 51 seconds ago.",....

如何将这些中的每一个添加到变量、id、时间等中?data.id 不起作用,它说 undef。

<script>
$(function() {
        $.ajax({
            type: "POST",
            url: "start.php",
            cache: false,
            success: function(data) {
                console.log(data.name);
                console.log(data);
            }
        })
    });
</script>

这是我从 start.php 返回的

$return = array('id' => $info['id_str'] ,'time' => timeDiff(new DateTime($info['created_at'])), 'name' => $info['user']['name'], 'text' => $info['text'], 'image' => $picture, 'url' => "http://twitter.com/{$info['user']['screen_name']}");

print_r(json_encode($return));

编辑 我在 foreach 循环中有那个 print_r,这就是问题所在。所以我添加了另一个数组并在文件末尾使用了 echo json_decode($array,true) 。写这个以防万一,可能会对某人有所帮助。

干杯

4

4 回答 4

0

首先,在您的 PHP 中,将您的行更改为:

echo json_encode($return, true);

第二个参数确保 JSON 可解释为关联数组。此外,您应该在返回 JSON 时使用echo而不是;可以改变格式。print_rprint_r

接下来,使用以下 AJAX 调用:

$.ajax({
    type: "POST",
    url: "start.php",
    dataType: "json", // Add this option.
    cache: false,
    success: function(data) {
        console.log(data.name);
        console.log(data);
    }
})

dataType: "json"选项可确保data在检索到它后立即将其解析为 JSON 对象。因此,data.id应该立即在您的success回调函数中可用。

希望这可以帮助!

于 2013-09-20T18:29:45.183 回答
0

首先,您应该echo在服务器脚本中使用。print_r主要用于调试数组。

其次,您应该dataType为 ajax 调用声明一个选项:

$.ajax({
    dataType: "json", // <-- here
    type: "POST",
    url: "start.php",
    cache: false,

    success: function(data) {
        console.log(data.name);
        console.log(data);
    }
});

你现在拥有它的方式,我认为你得到了一个字符串响应作为数据。

你可以用console.log(JSON.stringify(data));

于 2013-09-20T18:31:26.707 回答
0

你必须dataType: 'json'在你的ajax中设置。这意味着 jQuery 将为您解析结果为 JSON。

然后解析数据,

 data = $.parseJSON(data);

然后阅读var id = data.id;

此外,在您的 PHP 中,无需使用 print_r()。只需使用 echo 代替 print_r().like:

echo json_encode($return);
于 2013-09-20T18:33:20.500 回答
-1

您需要将 JSON 字符串解析为一个对象。您可以使用JSON.parse来执行此操作。

// Your JSON string
var json_str = "{'id': 'foo', 'time': 'bar'}";

// We need to parse it, converting it into a JS object
var json_obj = JSON.parse(json_str);

// We can now interact with it
console.log(json_obj.id);
console.log(json_obj.time);

或者,您可以使用内置的 jQuery 函数parseJSON()解析 JSON 。

jQuery 还有一个内置函数,用于获取 JSON,称为getJSON()。如果有记忆,这只是进行.ajax()调用和指定数据类型的简写json。这将为您处理上述(解析 JSON),并且是推荐的解决方案。

于 2013-09-20T18:29:01.160 回答