与jQuery AJAX聊天

时间:2016-05-10 18:33:07

标签: jquery json ajax chat

我有两个python脚本(由我的讲师提供)。

  • getchat.py不接受参数,它会在JSON中返回包含日期,时间,用户和消息的对象表中的所有消息。
  • sendchat.py接收一条消息,并在JSON中返回一个对象,该对象具有两个字段num,可以是1.0:消息为空或分别成功添加。

我想要做的是当用户尝试发送消息时使用sendchat.py将msg发布到数据库中,然后使用getchat.py获取所有消息并显示它们。

<div id="chatmsg"></div>
<div id="cwrapper">
    <input class="msg" type="text" id="msg" name="msg">
    <button id="send">Send</button>
</div>

到目前为止我的jQuery脚本(我使用了一些仅用于尝试的文档)

$("button").click(function() {
    $.getJSON('./getchat.py', function(data){
        var items = [];
        $.each(data, function(d) {
            items.push("<li>" + d + "</li>");
        });

        $("<ul/>", {
            html: items.join( "" )
        }).appendTo("#chatmsg");
    });

    $.post("./sendchat.py", { msg: $("#msg").val() }, function(data, status) {
        // I don't know how to deal with this.
    });
});

每次按下发送时,我得到的是一个列表0,1,2,...。该列表出现半秒钟后消失。我哪里做错了?我该如何正确实现?谢谢大家!

2 个答案:

答案 0 :(得分:0)

使用准备好进行聊天

$( document ).ready(function() {
       $.getJSON('./getchat.py', function(data){
        var items = [];
        $.each(data, function(d) {
            items.push("<li>" + d + "</li>");
        });

        $("<ul/>", {
            html: items.join( "" )
        }).appendTo("#chatmsg");
    });
    });


// this is to post a message
$("button").click(function() {
    
    $.post("./sendchat.py", { msg: $("#msg").val() }, function(data, status) {
        // I don't know how to deal with this.
// Get the messages, better if only get the last
$.getJSON('./getchat.py', function(data){
        var items = [];
        $.each(data, function(d) {
            items.push("<li>" + d + "</li>");
        });

        $("<ul/>", {
            html: items.join( "" )
        }).appendTo("#chatmsg");
    });


    });
});

我不尝试这个代码,但你可以成为一个想法

答案 1 :(得分:0)

$.getJSON('./getchat.py', function(data){



      //First show the data on your browser inspector NOT EMPTY
    console.log(data);
       
      //Later you need parse JSON
      var j = JSON.parse(data);

  //See in inspector
  console.log(j);

  //you can display your object and fields
// For example    j.message or j[0].message

// A for o foreach like you preffer, something like this

        var items = [];
        $.each(data, function(d) {
            items.push("<li>" + d + "</li>");
        });

        $("<ul/>", {
            html: items.join( "" )
        }).appendTo("#chatmsg");
    });