Ajax调用存储过程简单实例
ajax基于javascript ,就是通过网页脚本向服务器发送异步的请求,改变同步请求的不便
同步请求 一个请求必须等待到服务器的响应 然后整个页面刷新
异步请求 则不需要等待服务器的响应 因此页面可以实现局部刷新
这样的好处是提供了更好的用户体验,仅供初学者学习。
页面代码如下:

<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
function addNumber()
{
createXMLHttpRequest();
var url= "Handler.ashx";
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=showResult;
xmlHttp.send(null);
}
function showResult()
{
//alert(xmlHttp.status) ;
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
document.getElementById("result").innerHTML=xmlHttp.responseText;
}
}
}
</script>
</head>
<body>
<form id="form2" runat="server">
<div style="text-align: center">
<div id="result"></div>
</div>
<input id="btnGetData" type="button" value="Ajax 获取存储过程数据" onclick="addNumber();"/>
</form>
</body>
</html>
var xmlHttp;
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
function addNumber()
{
createXMLHttpRequest();
var url= "Handler.ashx";
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=showResult;
xmlHttp.send(null);
}
function showResult()
{
//alert(xmlHttp.status) ;
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
document.getElementById("result").innerHTML=xmlHttp.responseText;
}
}
}
</script>
</head>
<body>
<form id="form2" runat="server">
<div style="text-align: center">
<div id="result"></div>
</div>
<input id="btnGetData" type="button" value="Ajax 获取存储过程数据" onclick="addNumber();"/>
</form>
</body>
</html>
非常简单的存储过程实例 如下:

create procedure GetDataSam(
@number int
)
as
begin
declare @str nvarchar(200);
set @str='select top '+cast(@number as nvarchar)+ 'title from zhq_in_content order by createdate desc';
exec(@str);
end
@number int
)
as
begin
declare @str nvarchar(200);
set @str='select top '+cast(@number as nvarchar)+ 'title from zhq_in_content order by createdate desc';
exec(@str);
end
一般处理文件Handler.ashx;代码如下

<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Text;
public class Handler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
StringBuilder sb = new StringBuilder();
int num = 10;
DataSet ds = GetDataSetFromDB(num);
if(ds!=null &&ds.Tables[0].Rows.Count>0){
for (int i = 0; i < ds.Tables[0].Rows.Count ;i++)
{
if(sb.ToString()==""){
sb.Append(ds.Tables[0].Rows[i]["title"].ToString());
}
else
{
sb.Append("<br/>").Append(ds.Tables[0].Rows[i]["title"].ToString());
}
}
}
context.Response.Write(sb.ToString());
}
public bool IsReusable
{
get
{
return false;
}
}
public DataSet GetDataSetFromDB(int num) {
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["foretech"].ToString());
try
{
conn.Open();
//string sql = "select top 10 title from zhq_in_content order by createdate desc;";
// SqlCommand comm = new SqlCommand("select top 10 title from zhq_in_content order by createdate desc;",conn);
SqlDataAdapter da = new SqlDataAdapter("GetDataSam", conn);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter para = new SqlParameter("@number",num);
para.Direction = ParameterDirection.Input;
da.SelectCommand.Parameters.Add(para);
DataSet ds = new DataSet();
da.Fill(ds);
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
return ds;
}
else
{
return null;
}
}
finally
{
conn.Close();
}
}
}
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Text;
public class Handler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
StringBuilder sb = new StringBuilder();
int num = 10;
DataSet ds = GetDataSetFromDB(num);
if(ds!=null &&ds.Tables[0].Rows.Count>0){
for (int i = 0; i < ds.Tables[0].Rows.Count ;i++)
{
if(sb.ToString()==""){
sb.Append(ds.Tables[0].Rows[i]["title"].ToString());
}
else
{
sb.Append("<br/>").Append(ds.Tables[0].Rows[i]["title"].ToString());
}
}
}
context.Response.Write(sb.ToString());
}
public bool IsReusable
{
get
{
return false;
}
}
public DataSet GetDataSetFromDB(int num) {
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["foretech"].ToString());
try
{
conn.Open();
//string sql = "select top 10 title from zhq_in_content order by createdate desc;";
// SqlCommand comm = new SqlCommand("select top 10 title from zhq_in_content order by createdate desc;",conn);
SqlDataAdapter da = new SqlDataAdapter("GetDataSam", conn);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter para = new SqlParameter("@number",num);
para.Direction = ParameterDirection.Input;
da.SelectCommand.Parameters.Add(para);
DataSet ds = new DataSet();
da.Fill(ds);
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
return ds;
}
else
{
return null;
}
}
finally
{
conn.Close();
}
}
}
仅供初学者学习,说不定去其他公司笔试的时候有用,用SQLHelper怕初学者看不懂,这个简单易懂。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架