需要帮助json_encode($ array)问题

时间:2011-08-29 10:22:34

标签: jquery json

我有这段代码:

<script>
    $(document).ready(function()
    {
        refresh();
    });

    function refresh()
    {      
        $.get('getMessageDetails.php', function (json) {
            alert(json);  //as a test for now
        });
    }
</script>

然后我有了我的getMessageDetails.php:

<?php
header('Content-Type: application/json; charset=utf-8');
include('header_application.php');
$lastNewMessageCnt = $obj_clean->getUnopenedMessagesCount($_SESSION['user_id']) + 1;
$last_unopened_message_row = $obj_clean->getLastUnopenedMessage($_SESSION['user_id'],$lastNewMessageCnt); 

echo json_encode($last_unopened_message_row);

&GT;

和我的HTML:

echo "<tr>";
echo '<td><a id = "message_id" class="red_link" href="'.ADDRESS.'view_message.php?id='.$r['id'].'"><span id = "subject">'.$r['subject'].'</span></a></td>';
echo '<td id = "unique_code1">'.$uniqueCode1.'<span id = "unique_code2" class="pink_text">'.$uniqueCode2.'</span><span id = "unique_code3">'.$uniqueCode3.'</span></td>';
echo "</tr>";

为什么我发出警报(json)我得到的值我应该得到哪个是最后一条消息:

[{"subject":"Freechat ha ha","id":"15","created_at":"2011-08-29 11:16:45","unique_code":"LUCINEM000RC","opened_once":"0"}]

但是,只要我编码:

alert($("#subject").html(json.subject));  
alert($("#message_id").html(json.id));
alert($("#unique_code1").html(json.unique_code));

我收到第一封邮件的详细信息???这不是我想要的 我哪里出错了? 谢谢

2 个答案:

答案 0 :(得分:1)

试试这个:

alert(json[0].subject);

因为json字符串包含在[]中,所以它形成了一个数组,你想从中获取第一个元素

答案 1 :(得分:0)

JSON

中的

  • 对象由{}
  • 表示
  • 数组由[]
  • 表示

所以要访问需要的数据,你需要这样做..

alert(json[0].subject);
alert('<br>'+json[0].id);
alert('<br>'+json[0].created_at);
alert('<br>'+json[0].unique_code);
alert('<br>'+json[0].opened_once);

DEMO

更新

实际上你的jquery函数存在问题

使用 jQuery.getJSON()

或者如果您使用的是jQuery.get,那么请将"json"写为第三个参数

function refresh()
    {      
        $.get('getMessageDetails.php', function (json) {               
        },"json"); // <---here
    }

注意:为什么不安装firebug,它会告诉您的错误运行时