Я использовал ниже ajax вызов, чтобы извлечь данные из базы данных и показать их на моей странице.
$.ajax({
type: "POST", url: "MyPage.aspx/LoadGrid",
data: "{idyear:'2020'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
$(".gridBody").html(response.d);
},
failure: function (response) {
alert(response.d);
}
});
В настоящее время эта операция возвращает 1026 записей и занимает около 12 секунд.
, поскольку этот процесс занимает много времени, и в будущем записей будет больше, я должен найти альтернативный способ быстрой загрузки данных.
Итак, я попробовал другой подход. Сначала я решил получить общее количество записей. например, теперь у меня есть 1026 записей, и если я хочу загрузить свои данные в 100 границах записей, мне нужно сделать 11 ajax вызовов одновременно и объединить результаты в конце всех вызовов ajax. Я подумал, что, применяя этот метод, я могу начать все вызовы вместе, и мне не нужно ждать окончания вызова, чтобы начать новый.
var pagesize = 100;
getQty(function () {
var pagesqty = Math.floor(qty / pagesize);
if (qty % pagesize > 0) {
pagesqty += 1;
}
var control = 0;
for (var i = 0; i < pagesqty; i++) {
$.ajax({
type: "POST", url: "MyPage.aspx/LoadGridMtoN",
data: "{idyear:'2020' , page:'" + i + "' , pagesize:'" + pagesize + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
//alert(control+" succeed");
eval("var str" + i + "='" + response.d + "'");
control += 1;
if (control == pagesqty) {
var str = "";
for (var i = 0; i < pagesqty; i++) {
eval("str += str" + i);
}
$(".gridBody").html(str);
}
},
failure: function (response) {
alert(response.d);
}
});
}
});
но теперь я получаю сообщение об ошибке тайм-аута при выполнении вызовов ajax. кто-нибудь знает какой-нибудь способ лучше?
PS: я хотел попробовать веб-работника, но кажется, что я не могу использовать JQuery в веб-Workwer.
PS: я не хочу использовать пейджинг. Я должен загрузить все данные вместе.