同时发两个ajax异步传输数据,然后四五个人同时点击一个页面,结果返回的数据混乱,谁的都能获取到,并出现undefined情况,大家有没有遇到这种情况的, 用的getjson 求帮助。。。。。。在线等
api.ashx?keyword=保存的加密sql语句 &otherstr=这个是特殊条件(一般如:userid=123)
表a表b保存的是公共信息类似新闻,谁都可以读取。
A人 请求表a返回json
B人 请求表b返回json
一开始都正常,刷新刷新着,结果B得到的是A的json A得到的可能是A也可能得到的是CDEF等人的。
关键代码如下:
Request.QueryString["keyword"] url实际为加密sql语句
Json = Get_Json(keyword); 获取json方法 日志打印的sql语句也是这个keyword,这个keyword在底层肯定并发情况下被替换了,但是找不到原因。
public string Get_Json(string sql10)
{
DataTable dt = new DataTable();
dt = DataLink.GetList(sql10); 怀疑过这个dt对象
string Json = GetJson.ToJson(dt); tojson这个方法应该没问题只是转换字符
return Json;
}
public static DataTable GetList(string sqlstr)
{
try
{
ConnOpen("sqlconn");
SqlCommand cmd=new SqlCommand(); 怀疑过这个cmd 原来没new现在new了
cmd = sqlconn.CreateCommand();
cmd.CommandText = sqlstr;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
*************只写了关键的部分
}
}
基本上就是以上代码,以前真没有考虑过这个并发现象,没想到那么严重,希望大家多多指点
userid=123,这里的userid是怎么得到的?
就题目来看,看不出来会有并发问题
每次查询的时候,连接对象关闭了吗
有可能是Js的错误,我有时候也会碰到,有的时候甚至不会发送请求,你仔细检查一下Js请求代码,或者把Js代码处理一下发出来看看。
出现undefined,有可能是ajax之间的调用有问题,看一下Js的调用顺序有没有问题。
监视下每次的SQL语句呢,还有是不是用了什么静态变量保存数据?
今天早上买包子,人太多,老板找钱都找错人了
把每次请求的sql语句都打印出来对比下就知道了
在URL参数后面加个时间戳呢?
主要检查 Static
不得不感叹下,代码写的太糟糕了,居然传递Sql语句,以为加密了就没事拉? 用什么加密的?JS?JS是可以被下载到客户端的,加密算法是可以被看到的....
方法与参数命名也非常槽糕,没法看
1、Get_Json(keyword); 方法里面返回的是不是static变量?
2、static DataTable GetList() 方法里面的DataTable是new出来的么?还是static变量...
擦,楼主......在没有深入了解static的情况下不要随便乱用static,static表示什么?表示所有的用户通过Web来访问的都是同一个变量,多个用户来访问,也都是访问的同一个变量,能不出问题么