ajax分批次读取后台数据ajax读取后台时如果返回的json字符串过长,就会报错:“字符串的长度超过了为

maxJsonLength

属性设置的值”,解决办法是:分批次读取后台数据maxJsonLength超过设置的值

思路:先读取要返回数据的总条数,每次读取100条,根据总条数除以100来确定需要读取几次

js代码:

//获取总记录数

var dataCon = 0; //要读取的次数

var dataVal = ""; //总数据的集合

function getS2Con()

{

$.ajax({

type: "POST",

contentType: "application/json; charset=utf-8",

dataType: "json",

url:

"/Addin/OydSoftServices/SystemCalendarManagementWebservice.asmx/getS2Con",

data: '{ "s2003": "' + s2003 + '","s2004": "' + s2004 + '","s2005":

"' + s2005 + '","s2006": "' + s2006 + '","s2007": "' + s2007 +

'","s2008": "' + s2008 + '","s2009": "' + s2009 + '","s2010": "' +

s2010 + '"}',

async: false,

success: function (data) {

var con = eval_r('(' + data.d + ')');

if (con % 100 > 0) //总条数大于100条 最少执行两次

dataCon = parseInt(con / 100) + 1;

else //总条数小于100条 执行一次

dataCon = parseInt(con / 100);

},

error: function (XMLHttpRequest, textStatus, errorThrown)

{

;

}

});

if (dataCon > 0)

{

for (var i = 0; i < dataCon; i++)

{

var index = i.toString();

PiCiGetS2(index);

}

}

}

//分批次读取s2数据

function PiCiGetS2(index)

{

$.ajax({

type: "POST",

contentType: "application/json; charset=utf-8",

dataType: "json",

url:

"/Addin/OydSoftServices/SystemCalendarManagementWebservice.asmx/PiCiGetS2Data",

data: '{ "index": "' + index + '","s2003": "' + s2003 + '","s2004":

"' + s2004 + '","s2005": "' + s2005 + '","s2006": "' + s2006 +

'","s2007": "' + s2007 + '","s2008": "' + s2008 + '","s2009": "' +

s2009 + '","s2010": "' + s2010 + '"}',

async: false,

success: function (data) {

//每获取一次就用字符串将他们拼接到一次

var h = data.d;

if (index == "0")

dataVal = h.substr(h.indexOf("[") + 1, h.lastIndexOf(',') -

10)

else

dataVal

= dataVal + "," + h.substr(h.indexOf("[") + 1, h.lastIndexOf(',') -

10);

if (parseInt(index) == dataCon - 1) {

dataVal = "{ Rows: [" + dataVal + "], Total: 1 }";

CustomersData = eval_r('(' + dataVal + ')')

}

},

error: function (XMLHttpRequest, textStatus, errorThrown)

{

;

}

});

}

后台代码:

public DataTable PiCiGetS2Data(string index,

string s2003, string s2004, string s2005, string s2006, string

s2007, string s2008, string s2009, string s2010)

{

string sql = @"";

if (index == "0" || string.IsNullOrEmpty(index))

{sql = @"SELECT TOP 100 * FROM dbo.S2";}

else

{

string rowIndex =

(Convert.ToInt32(index) * 100).ToString();

sql = @"SELECT TOP 100 * FROM s2 WHERE S2001>

(SELECT MAX(S2001) FROM

(SELECT TOP " + rowIndex + "

S2001 FROM dbo.s2 ORDER BY S2001) AS b ) ORDER BY

S2001";

}

DataTable dt = SQLHelper.Fill(SQLHelper.GHRDBConnectionString,

CommandType.Text, sql, null);

return dt;

}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐