2016-05-10 108 views
0

我有两个python脚本(由我的教师提供)。与jQuery AJAX聊天

  • 不采用参数,它返回JSON中的所有消息包含日期,时间,用户和消息的对象表。
  • sendchat.py它接收一条消息并以JSON返回一个对象,其中包含两个字段num,可以为1,0,表示消息为空或分别成功添加。

我想要做的是,当用户试图发送使用sendchat.py张贴味精在数据库中,并使用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,...。该列表出现半秒钟后消失。我哪里做错了?我怎样才能正确实现这一点?谢谢你们!

回答

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"); 
 
    }); 
 

 

 
    }); 
 
});

我没有尝试这个代码,但你可以是一个想法

+0

是,这有助于,但仍然是信息出于某种原因,请勿在服务器上发布POST信息。并且有关于如何从JSON上显示我的div #chatmsg消息的想法?我试过JSON.parse对象,但它似乎不工作:( – AnotherBrick

+0

是的,你需要使用解析 –

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"); 
 
    });