我一直试图做一些像无限滚动的工作,但没有成功。在网上搜索了很多,我自己也在问这个问题。
关于代码, 在masterPage.Master中我放了:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
在后面的代码中的另一个页面上,我有一个这样的方法,将由脚本调用:
[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
public static List<agendaList> GetEvents(int startAt, int howMany)
{
...
return eventsListNew.OrderByDescending(p => p.data).Skip(startAt).Take(howMany).ToList<agendaList>();
}
在页面中我添加了脚本:
<script type="text/javascript">
$(document).ready(function () {
$(window).scroll(function () {
if ($(window).scrollTop() == $(document).height()-$(window).height()) {
GetEvents();
}
});
});
function GetEvents() {
var howMany = 10;
var startAt = $(".mason_script").size();
console.log(startAt);
PageMethods.GetEvents(startAt, howMany);
}
function OnGetPostsComplete(Events) {
for (var i = 0; i < Events.length; i++) {
$("#list_eventos_content").last().append("<ul>"+
Events[i].title + "</h2><p>" +
Events[i].data + "</p></div>" + "</ul>");
}
}
</script>
它说PageMethods没有定义! 特别是在控制台我得到: 未捕获的ReferenceError:未定义PageMethods
我尝试使用ajax方法,但没有成功:
<script type="text/javascript">
$(document).ready(function () {
$(window).scroll(function () {
var howMany = 10;
var startAt = $(".mason_script").size();
if ($(window).scrollTop() == $(document).height() - $(window).height()) {
//GetEvents();
console.log(startAt);
$.ajax({
type: "POST",
//async: true,
url: "default.aspx/GetEvents",
//url: '<%= ResolveUrl("ConsultaPedidos.aspx/GetClients") %>',
//data: {startAt:startAt,howMany:howMany},
data: JSON.stringify({ startAt: startAt, howMany: howMany }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function () { alert("success"); },
error: function () {alert("it was not a success");}
});
}
});
});
</script>
我认为该网站已经启用了ajax,因为它已经完成了Visual Studio 2010,我认为我拥有所有必要的垃圾箱(我甚至将System.Web.Extensions.dll添加到项目中)
我不知道这是否有助于找到问题,但在body元素之后的源代码中我有以下内容:
<body id="body" class="home">
<div>
<form method="post" action="./Default.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTY1NDU2MTA1Mg9kFgJmD2QWAgIDDxYCHgVjbGFzcwUEaG9tZRYCAgEPZBYIAgQPFgIeB1Zpc2libGVoZAIFD2QWBAIDDxYCHwFoZAIFDxYCHwFoZAIIDxYCHwFoZAIJD2QWAmYPFgIfAWhkZHECEx2bRG9W3HRdtf7e7U4T5JxcYTUIOFqhiAfLIgzr" />
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<script src="/WebResource.axd?d=eTLIdTUaKcPvbbHq3uBMJMuE5EuUKGo_QXsf5WdWsog2Gpmfy9qkIK_-y74XUCFlxJFADxQgAgshTA379vvKJGJvi4Ikqiv1yEvS7hpyqVc1&t=635918767619348548" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=qkRHwPohnv0qxNzn-8f9Xk8Z0dBG23n8MDuOOCYf4anPCmyRNRWeCNNgCauDnRlVqW5NKLUOVIfNjW56x6pHNSKmtX7CBH7SpCqDvmzy-NHrCoITbgWSVLGcKILzzGQ1Qlpwpc9IIxnLVQ51v9Kz9DCgKlPHgukhQEeDMmKkQtiLHT1xZPJVocodYa8aG11L0&t=40eb3b32" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
if (typeof(Sys) === 'undefined') throw new Error('Falha ao carregar estrutura ASP.NET Ajax do lado do cliente.');
//]]>
</script>
<script src="/ScriptResource.axd?d=gU20UmsqL_uPpdXkHzmyFnlCqFiRG-TM2_Qv0ZALZUtlYUJwYdUdoCXOyXFrEkZWVT92wbL9D1m0HngfHHZW6U8GVV-j6jTKDIjQ4UrIHIXmsJyijp8fEm7m7Qeq-8buVg1yHzCv2Zqt_ktAHum363tvYlDt3B2fmD8Q3YF2jvkK8HbizNFHmiEcaIil3BlR0&t=40eb3b32" type="text/javascript"></script>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="CA0B0334" />
<input type="hidden" name="__SCROLLPOSITIONX" id="__SCROLLPOSITIONX" value="0" />
<input type="hidden" name="__SCROLLPOSITIONY" id="__SCROLLPOSITIONY" value="0" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEdAALKL6JprTutrB5uCf6KA5FA2RsWv7CsEAlbyK1tt2kzFFESTmnJ8bzYWS2HmzbItmQmobFjEmOUyk9VeVTmAEW9" />
</div>
<input type="hidden" name="ctl00$hidMenu" id="hidMenu" value="menu_home" />
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ctl00$ScriptManager1', 'form1', [], [], [], 90, 'ctl00');
//]]>
</script>
只有这样才会出现页面的其余部分和调用PageMethod的脚本。
由于