如何显示jquery POST请求的结果?

时间:2014-02-05 16:20:29

标签: javascript jquery json

我正在尝试使用jQuery从头开始构建一个网络聊天。我现在可以成功地向我的(也是自建的)API发送消息,现在我想要轮询新消息。我这样做是使用下面的功能。问题是我似乎无法对返回的json做任何事情。我尝试了JSON.parse()jQuery.parseJSON(),但似乎都没有。完全没有警报弹出。当我使用简单的alert("with a simple string here");时,它确实有用,所以它确实达到了成功点。

function updateConversation(){
    if(!instance) {
        instance = true;
        $.ajax({
                type:"POST",
                contentType: "application/json",
                accepts: "application/json; charset=utf-8",
                url: "/api/support/" + "1",
                data: JSON.stringify({
                    'action': 'GET_MESSAGES',
                    'user_id': user_id,
                    'last_message_id':last_message_id
                }),
                dataType: "json",
                success: function(data) {
                    var usingjsonparse = JSON.parse(data);
                    alert(usingjsonparse.messages);
                    var usingjqueryparse = jQuery.parseJSON(data);
                    alert(usingjsonparse.messages);
                    if (data.text) {
                        for (var i=0; i< data.text.length; i++) {
                            $('#conversation').append($("<P>"+ data.text[i]));
                        }
                    }
                    document.getElementById('conversation').scrollTop = document.getElementById('conversation').scrollHeight;
                    instance = false;
                    // last_message_id = data.id;

                }
            });
    } else {
        setTimeout(updateConversation, 1000);
    }
}

我期待的是json:

{"messages": [{"is_supporter": True, "text": u"aergaerg", "id": 1, "created": "1391609527"}, {"is_supporter": True, "text": u"eargaerg", "id": 2, "created": "1391609551"}, etc.]}

有人知道如何查看返回的原始数据字符串吗?我尝试了datadata.messagesdata.messages[0]以及其他数十种变体,但无济于事。当我alert(typeof(data));时,我得到object

有人知道我在这里做错了什么吗?欢迎所有提示!

PS。有没有人知道一种更简单的方式来看待最新情况,而不是总是警告一切?

1 个答案:

答案 0 :(得分:0)

问题1:

你有:

dataType: "json"

这告诉jQuery忽略服务器所说的响应,并将其视为JSON。它将解析它并将其转换为对象。

然后你有:

var usingjsonparse = JSON.parse(data);

将对象转换为字符串(例如"[Object object]")并尝试将其解析为JSON,而不是。{/ p>

您应该做的是让服务器返回适当的内容类型(application/json),而不是提及JSON.parser而不提及dataType


问题2:

{'messages': [{'is

...不是JSON。 JSON字符串必须由"个字符分隔。你也有其他一些错误。它看起来像一个字符串化的Python对象。在将其发送到浏览器之前将其推送通过JSON序列化程序。


  

有人知道如何查看返回的原始数据字符串吗?

原始字符串将通过网络选项卡中的浏览器开发人员工具显示。

您可以看到console.log(data)传递给函数的内容。