我开发了以下系统,它在aspx页面上返回无限滚动数据。它运作得非常好。但是,检查数据库是否已到达结束行并且未返回任何数据时,我遇到了一个小问题。
使用以下代码,每当页面滚动到底部时,javascript函数一直在调用webmethod,尽管没有数据要返回。如何检查没有数据以避免那些无意义的函数调用?
$(document).ready(function () {
var offset = 0;
var fetch = 30;
function Load() {
$.ajax({
type: "POST",
url: "UserControls/uc_functions.aspx/LoadLatest",
data: "{offset :" + offset + ", fetch: " + fetch + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
if (data != "") { $('.latest').append(data.d); }
else {alert("no data"); completed = true; } //I never get this alert even when there is no data returned from the database
}
})
};
$(window).scroll(function () {
if ($(window).scrollTop() + $(window).height() > $(document).height() - 10) {
Load(offset, fetch);
offset = offset + fetch;
}
});
});
[WebMethod]
public static string LoadLatest(int offset, int fetch)
{
var LoadSql = db.Query("Exec dbo.SD_unionServices @0, @1", offset, fetch);");
foreach (var item in LoadSql)
{
Load_sb.Append(item.title + "<br />");
}
if(LoadSql.Count() > 0)
return Load_sb.ToString();
else
return string.Empty;
}
UPDATE 要检查数据是否为空,我使用data.d而不是数据
if (data.d != "") { $('.latest').append(data.d); }
而不是
if (data != "") { $('.latest').append(data.d); }
答案 0 :(得分:2)
当没有可用数据时,改进此选项以返回string.Empty。
public static string LoadLatest(int offset, int fetch)
{
var LoadSql = db.Query("Exec dbo.SD_unionServices @0, @1", offset, fetch);");
foreach (var item in LoadSql)
{
Load_sb.Append(item.title + "<br />");
}
if(Load_sb.Count() > 0)
return Load_sb.ToString();
else
return string.Empty;
}
答案 1 :(得分:2)
Oluwafemi 是对的
当没有可用数据时,改进此选项以返回string.Empty。
我还要补充一点,如果您已到达列表的末尾,则不发布数据非常重要。对于网络连接速度慢的人来说,这是有益的:
$(document).ready(function () {
var offset = 0;
var fetch = 30;
var completed = false;
function Load() {
if (!completed) {
$.ajax({
type: "POST",
url: "UserControls/uc_functions.aspx/LoadLatest",
data: "{offset :" + offset + ", fetch: " + fetch + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
if (data != "") { $('.latest').append(data.d); }
else {alert("no data"); completed = true;} //I never get this alert even when there is no data returned from the database
}
});
}
};
$(window).scroll(function () {
if ($(window).scrollTop() + $(window).height() > $(document).height() - 10) {
Load(offset, fetch);
offset = offset + fetch;
}
});
});
答案 2 :(得分:0)
trim
函数删除数据中的所有空格。如果它不能修剪数据,很明显没有数据存在
if (!$.trim(data)){
//no data
}
else{
//data found!
}