c# – 使用静态对象从jquery ajax和problemm调用webmethod
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 使用静态对象从jquery ajax和problemm调用webmethod,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2175字,纯文字阅读大概需要4分钟。
内容图文
![c# – 使用静态对象从jquery ajax和problemm调用webmethod](/upload/InfoBanner/zyjiaocheng/784/c712b9aace014d0c8810cc8e932d1088.jpg)
我有一个web方法,通过jquery ajax调用它.在web方法我将转发器数据源绑定到pagedatasourse对象但是当我运行我的程序如果我不使用静态关键字webmethode方法名称jquery ajax方法不能正常工作,如果使用static keyword我有这个错误
Object reference not set to an instance of an object….System.NullReferenceException: Object reference not set to an instance of an object.
和pagedatasourse落在exception.i confused.what是什么解决方案?
非常感谢你
它是我的jquery函数
$(function () {
var x = 0;
$('.c1').bind('click', function () {
counter = counter + 1;
$.ajax(
{
type: "POST",
url: "WebForm1.aspx/bringdata",
data: { counter: counter },
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
cache: false,
success: function (ret) {
alert("success");
},
error: function (x, e) {
alert("error ");
}
}
);
})
$('.c2').bind('click', function () {
x = x - 1;
})
})
及其背后的代码:
[WebMethod]
public static void bringdata(int counter){
SqlConnection con = new SqlConnection("data source=.;database=site;integrated security=true;");
int cnt;
string sSQL = "Select username ,average,weight,point,password ,kal, Rank() over(order by point desc) as 'ranking' from karbar order by point desc";
SqlCommand cmd = new SqlCommand(sSQL, con);
SqlDataAdapter adapt = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapt.Fill(ds);
cnt=ds.Tables[0].Rows.Count;
PagedDataSource pds = new PagedDataSource();
pds.AllowPaging=true;
pds.DataSource=ds.Tables[0].DefaultView;
pds.PageSize=5;
pds.CurrentPageIndex=counter;
int vcnt=cnt/pds.PageSize;
rptList.DataSource = pds;
rptList.DataBind();
}
解决方法:
为什么你会例外?
我的猜测是,因为APS.NET在每个请求之后处理DataSet(此处未显示),同时您尝试从上一个请求中分页结果.如果你使DataSet静态(它在ASP.NET中是一个很大的禁忌),那么它将保存在内存中,并在所有请求之间共享.
如何解决这个问题?
您使用的数据访问模式不正确.数据集实际上是肥胖的男孩,实际上不应该与ASP.NET一起使用.
>完全摆脱DataSet.不要使用静态对象,当你的应用程序获得一些流量时,你会看到真正奇怪的错误.
>使用更轻量级的东西,例如List< Record>并使用DataReader填充它.
>使用数据库分页,而不是内存中的分页.永远不要求数据库服务器带来所有数据,否则你的应用程序将关闭(当你获得一些流量和数据库变大).
>考虑使用ORM(如NHibernate或EF),它会为你做很多魔术.
内容总结
以上是互联网集市为您收集整理的c# – 使用静态对象从jquery ajax和problemm调用webmethod全部内容,希望文章能够帮你解决c# – 使用静态对象从jquery ajax和problemm调用webmethod所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。