我想将 Ajax 用于我的聊天应用程序,而不是每秒刷新一个 iframe 以获取新消息。有人告诉我使用带有 ajax 的 web 服务。我应该如何处理我的代码才能使用 Ajax?
这是显示每秒调用一次的 Iframe 的代码,并且 Iframe src 有一个显示聊天消息的 aspx 页面
<script type="text/javascript">
function refreshConversatio() {
document.getElementById('iframeDisplayMessage').src = 'frmMessageDisplay.aspx';
}
</script>
<body>
<div id="divMessageDisplayPage" style="height: 724px; ">
<asp:PlaceHolder ID="ContentPlaceHolderDisplayMessage" runat="server">
<iframe id="iframeDisplayMessage" name="iframeDisplayMessage" width="76%" style="background-color:White;" height="95%" frameborder="0" src="frmMessageDisplay.aspx"
onload="document.getElementById('iframeDisplayMessage').contentWindow.scrollTo(0,document.getElementById('iframeDisplayMessage').contentWindow.document.body.scrollHeight)">
</iframe>
</asp:PlaceHolder>
</div>
<script type="text/javascript">
setInterval(function () { refreshConversatio(); }, 1000)
</script>
</body>
这是在 Iframe 中调用的 Aspx 页面,它具有显示消息的文字
<div id="divConversation" style="width: 100%;">
<asp:Literal ID="RecepientConversation" runat="server"/>
</div>
这是尚未使用的 Ajax 代码,我不知道在上面的应用程序中的何处以及如何使用它
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- Reference to google J-Query api.
You can download and add jquery javasripts files to you soln.-->
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<title></title>
</head>
<body>
<script type="text/javascript">
function callService() {
//url of your web service
$.ajax('May be url of web service to be written here',
{
beforeSend: function (xhr) { },
complete: function () { },
contentType: 'application/json; charset=utf-8',
dataType: 'json',
jsonp: 'callback',
type: 'POST',
error: function (xhr, ajaxOptions, thrownError) {
//Function will be called when any error occcured.
alet(thrownError);
},
success: function (data) {
if (!data.d) {
//Cound not find data.
}
else {
if (curdata != data.d) {
//result of you web method is stored in data.d object.
//TODO : Work with you data here.
alert(data.d);
}
}
}
});
}
callService();
</script>
</body>
</html>
回发后
if (!Page.IsPostBack)
{
}
if(dt.Rows.Count != 0)
{
showOnPage.Append("<div style='background-color:ALICEBLUE;float:left; width:100%; word-wrap: break-word;font-size:14px;'><pre><font color='green'><b><div style='background-color:ALICEBLUE; margin-right:410px;'>" + dt.Rows[i][2].ToString() + " Says: </b></font></pre></div><div style='background-color:ALICEBLUE;font-size:14px;float: left;width: 410px;margin-left: -410px; word-wrap: break-word;font-size:14px;'><pre><font>" + dt.Rows[i][0].ToString() + "</font></pre></div><div style='background-color:ALICEBLUE; word-wrap: break-word;'><p style='color:#8B8A8A; margin-top:0'>Sent at " + Convert.ToDateTime(dt.Rows[i][1]).ToLongTimeString() + "</p></div><div style='clear:both;'></div>");
}
RecepientConversation.Text=showOnPage.ToString();