Javascript phonegap聊天应用程序用户可以查看其他消息
我正在使用phonegap开发一对一聊天应用程序。我的问题是当用户单击联系人并发送消息时。然后用户单击返回按钮并单击另一个联系人,它仍然可以看到他刚刚发送给第一个用户的消息 以下是我代码的一部分: 这里是使用ajax从服务器获取联系人。当它成功时,它将生成一个列表视图来显示所有联系人。Javascript phonegap聊天应用程序用户可以查看其他消息,javascript,jquery,iphone,ajax,cordova,Javascript,Jquery,Iphone,Ajax,Cordova,我正在使用phonegap开发一对一聊天应用程序。我的问题是当用户单击联系人并发送消息时。然后用户单击返回按钮并单击另一个联系人,它仍然可以看到他刚刚发送给第一个用户的消息 以下是我代码的一部分: 这里是使用ajax从服务器获取联系人。当它成功时,它将生成一个列表视图来显示所有联系人。 $。每个(联系人、功能(i、项目) { 输出+='; $(“#联系人列表”).html(输出).listview('refresh'); //在聊天页面的正面显示联系人姓名 $(“#联系人列表”).childr
$。每个(联系人、功能(i、项目)
{
输出+=';
$(“#联系人列表”).html(输出).listview('refresh');
//在聊天页面的正面显示联系人姓名
$(“#联系人列表”).children('li').on('click',函数()
{
var contact_name=$(this.attr('data-name');
$('contact_name').html(contact_name);
获取您的姓名(联系人姓名);
});
});
消息:
发送
这里是ajax代码的一部分,我使用ajax获取聊天数据,然后将它们附加到我的聊天页面中
success: function(data)
{
var get_data = JSON.parse(data);
$("#incomingMessages").append
(
"<div class='message'><span class='username'>" +
(get_data.from || 'Anonymous') +"</span> : " +
(get_data.message || ' ') + "</br>" +
(get_data.message_time || ' ')
+"</div>"
);
}
});
成功:函数(数据)
{
var get_data=JSON.parse(数据);
$(“#incomingMessages”)。追加
(
"" +
(从| |'匿名')+”获取_数据:“+
(获取_data.message | |“”)+“”+
(获取_data.message|u time|“”)
+""
);
}
});
我知道原因是,当用户单击“联系”时,它将始终转到同一页面,这就是为什么所有用户都可以看到该消息的原因
有什么解决办法吗
提前感谢。切换用户时,您应该清除#incomingMessages
。当您想用新用户的消息替换HTML内容时,可能会将其留在该div中
差不多
html(“”)一个简单的解决方案是使用本地存储来存储每个用户的历史记录(
#incomingMessages
)和#messageText
)
然后,您可以清除
#messageText
,并在用户重新打开聊天时重新加载它。可能与此无关,但您的html不正确。有一个rogue
,字段集中的div在字段集中没有关闭,还有一个rogue
和结尾。是的,你说得对,谢谢!!我已经考虑过了。我所做的是$('.'goBackButton')。单击(function(){$('.message')。empty();$(“#messageText”).val('.');然而,如果我这样做,用户将看不到他的历史聊天信息,因为它已设置为空。我认为唯一可以解决的方法是按照您所说的,然后在用户单击联系人姓名时使用ajax从服务器获取历史信息。但我想一定有更好的解决方案。
<!--When someone click a user in contacts, it will show the chat page-->
<div data-role="page" id="chat_page" data-role="page" data-theme="a">
<div data-role="header">
<h1 id="contact_name"></h1>
</div>
<div data-role="content">
<div id="incomingMessages" name="incomingMessages" class="msgContainerDiv" >
</div>
<label for="messageText"><strong>Message:</strong></label>
<textarea id="messageText"></textarea>
</div>
<div data-role="footer">
<fieldset class="ui-grid-a">
<div class="ui-block-a">
<a href="#contacts_page" id="goBackButton" data-role="button">Go Back</a>
</div>
<div class="ui-block-b">
<button data-theme="a" id="chatSendButton" name="chatSendButton">Send
</input>
</fieldset>
</div>
</div>
success: function(data)
{
var get_data = JSON.parse(data);
$("#incomingMessages").append
(
"<div class='message'><span class='username'>" +
(get_data.from || 'Anonymous') +"</span> : " +
(get_data.message || ' ') + "</br>" +
(get_data.message_time || ' ')
+"</div>"
);
}
});