首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从php返回json并处理

问从php返回json并处理
EN

Stack Overflow用户
提问于 2013-09-20 18:26:53
回答 4查看 110关注 0票数 1

我是从ajax电话里得到的

代码语言:javascript
复制
{"id":"381120774951940096","time":"Posted 0 minutes and 51 seconds ago.",....

我如何将其中的每一个添加到变量、id、时间等?data.id不能工作,它说。

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

这就是我从start.php回来的

代码语言:javascript
复制
$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));

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

干杯

EN

回答 4

Stack Overflow用户

发布于 2013-09-20 18:29:45

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

代码语言:javascript
复制
echo json_encode($return, true);

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

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

代码语言:javascript
复制
$.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对象后立即被解析为JSON对象。因此,data.id应该在您的success回调函数中立即可用。

希望这能有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2013-09-20 18:31:26

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

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

代码语言:javascript
复制
$.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));验证这一点。

票数 0
EN

Stack Overflow用户

发布于 2013-09-20 18:33:20

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

然后解析数据,

代码语言:javascript
复制
 data = $.parseJSON(data);

然后读var id = data.id;

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

代码语言:javascript
复制
echo json_encode($return);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18923451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档