访问json不起作用

时间:2012-03-18 17:24:54

标签: javascript jquery ajax json

我正在使用Ajax接收JSON更新:

    $(document).ready(function(){
    $('form').submit(function(event){
        event.preventDefault();
        var form = JSON.stringify($('form').serializeArray());

        $.ajax ({
            url: '{{ path('PUSChatBundle_add') }}',
            type: 'POST',
            data: form,
            contentType: 'application/json',
            success: function(){
                $.get('{{ path('PUSChatBundle_refresh') }}', function(data){
                    alert(data[1].text);
                });
            }
        });
    });          

});    

接收JSON-Object看起来很糟糕:

[{"messageId":43,"text":"ghstgh"}]

当我现在想要访问文本时:

alert(data[1].text);

我得到了未定义....

我做错了什么?

最诚挚的问候, 博多

3 个答案:

答案 0 :(得分:2)

JavaScript数组从0开始,而不是1。

答案 1 :(得分:2)

您的数组只有一个元素,因此您希望使用0作为索引:

alert(data[0].text);

答案 2 :(得分:2)

dataType设置为json,以便解析响应

success: function(){
                $.get('{{ path('PUSChatBundle_refresh') }}', function(data){
                    alert(data[0].text);
                },'json'); //<-- specify the dataType
            }

或手动解析json

success: function(){
                $.get('{{ path('PUSChatBundle_refresh') }}', function(data){
                    var json = $.parseJSON(data); //<- parse json
                    alert(json[0].text);
                });
            }

示例:

var j='[{"messageId":43,"text":"ghstgh"}]';
var json = $.parseJSON(j);
console.log(json[0].text); // or alert(json[0].text);

DEMO