我是从ajax电话里得到的
{"id":"381120774951940096","time":"Posted 0 minutes and 51 seconds ago.",....我如何将其中的每一个添加到变量、id、时间等?data.id不能工作,它说。
<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));编辑I在foreach循环中有一个print_r,这就是问题所在。因此,我添加了另一个数组,并在json_decode的末尾使用了echo json_decode($array,true) --以防万一,这可能会对某人有所帮助。
干杯
发布于 2013-09-20 18:29:45
首先,在PHP中,将行更改为:
echo json_encode($return, true);第二个参数确保JSON可以解释为一个关联数组。此外,在返回JSON时,您应该使用echo而不是print_r;print_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对象后立即被解析为JSON对象。因此,data.id应该在您的success回调函数中立即可用。
希望这能有所帮助!
发布于 2013-09-20 18:31:26
首先,您应该在服务器脚本中使用echo。print_r主要用于调试数组。
其次,您应该为ajax调用声明一个dataType选项:
$.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-20 18:33:20
您必须在ajax中设置dataType: 'json'。这意味着jQuery将把结果解析为JSON。
然后解析数据,
data = $.parseJSON(data);然后读var id = data.id;
此外,在PHP中,不需要使用print_r()。只需使用echo代替print_r().like:
echo json_encode($return);https://stackoverflow.com/questions/18923451
复制相似问题