gpt4 book ai didi

asp.net - 使用 JQuery/ASP.NET 进行简单 ajax 聊天时出现堆栈溢出错误

转载 作者:行者123 更新时间:2023-12-01 06:21:36 24 4
gpt4 key购买 nike

我正在尝试使用 JQuery 和 ASP.NET 创建一个简单的 ajax 聊天。我的代码的工作原理如下:

  1. 页面加载时,它会通过向 messages.aspx 页面发出请求来刷新“chatbox”div,该页面负责从数据库获取新消息,并使用 setTimeout() 启动自动刷新。
  2. 每当用户单击发送按钮时,都会将消息添加到 messages.aspx page_load 代码内的数据库中。

当超时开始时,我从一开始就收到堆栈溢出错误,并且我不确定什么会导致此错误?会不会是缓存?也许messages.aspx中的代码无法在这5秒内完成运行?任何帮助,将不胜感激!

此外,我并不担心 sql 注入(inject)攻击,但我只是想用简单的代码让它工作。

这是我的代码:

Client side

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
refreshChat();
$("#btnSend").click(function () {
addMessage();
});
return false;
});

function refreshChat() {
$.get("messages.aspx", function (data) {
$("#chatbox").empty();
$("#chatbox").prepend(data);
});
setTimeout(refreshChat(), 5000);
}

function addMessage() {
$.get("messages.aspx", { usr: $("#usr").val(), msg: $("#msg").val() });
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="input">
username: <input type="text" name="usr" id="usr" /><br />
message:<br />
<textarea id="msg" name="msg" rows="5" cols="30"></textarea><br /><br />
<input type="button" id="btnSend" name="btnSend" value="Send" />
</div>
<div id="chatbox"></div>
</form>
</body>
</html>

Server Side

using System;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.IO;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class messages : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection conn =
new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=F:\\Chatter\\App_Data\\messages.mdf;Integrated Security=True;User Instance=True");
conn.Open();

string sql;
SqlCommand comm;

if (Request["usr"] != null)
{
string user = Request["usr"].ToString();
string message = Request["msg"].ToString();
sql = "insert into messages (usr, msg, [date]) values ('"
+ user + "', '" + message + "', '" + DateTime.Now + "')";
comm = new SqlCommand(sql, conn);
comm.ExecuteNonQuery();
}

sql = "select top 5 usr, msg from messages order by [date] desc";
comm = new SqlCommand(sql, conn);
SqlDataReader dr = comm.ExecuteReader();

while (dr.Read())
{
Response.Write(dr["usr"].ToString() + ": <br/>" + dr["msg"] + "<br/><br/>");
}
dr.Close();

conn.Close();
}
}

最佳答案

您的 JavaScript 刷新聊天函数正在递归调用自身。将代码更改为:

function refreshChat() {
$.get("messages.aspx", function (data) {
$("#chatbox").empty();
$("#chatbox").prepend(data);
});
setTimeout(refreshChat, 5000);
}

关于asp.net - 使用 JQuery/ASP.NET 进行简单 ajax 聊天时出现堆栈溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/726580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com