2015-07-20 84 views
0

我正在尝试在我的项目中应用字幕功能,并决定试试看它是如何工作的。但是在测试它时,当我滚动到页面底部时,它会显示一条消息Undefined的客户端脚本错误。我不知道我在代码中做了什么错误,我不知道如何让它工作。我希望有人能帮我解决这个问题。下面是代码:使用jQuery Ajax和ASP.NET向下滚动页面时加载其他数据

直放站

<div id="dvCampaigns"> 
    <asp:Repeater ID="rptUsers" runat="server"> 
     <ItemTemplate> 
      <table cellpadding="2" cellspacing="0" border="1" style="width: 200px; height: 100px; 
       border: dashed 2px #04AFEF; background-color: #B0E2F5"> 
       <tr> 
        <td> 
         <b><u><span class="campaignname"> 
         <%# Eval("CampaignName") %></span></u></b> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <b>Description: </b><span class="description"> 
          <%# Eval("Description") %></span><br /> 
          <b>ID: </b><span class="campaign-id"> 
          <%# Eval("CampaignID") %></span><br /> 
          <b>Date Created: </b><span class="datecreated"> 
         <%# Eval("CreatedOn")%></span><br /> 
        </td> 
       </tr> 
      </table> 
      <br /> 
     </ItemTemplate> 
    </asp:Repeater> 
</div> 
<div> 
    <img id="loader" alt="" src="../Images/loading.gif" style="display: none" /> 
</div> 

代码隐藏

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!this.IsPostBack) 
     { 
      rptCampaigns.DataSource = GetUserData(1); 
      rptCampaigns.DataBind(); 
     } 
    } 

    public static TList<POLLice.Entities.Campaigns> GetCampaignData(int pageIndex) 
    { 
     int totalData; 
     var items = new CampaignsService().GetAll(pageIndex, 10, out totalData); 
     return items; 
    } 

    [WebMethod] 
    public static string GetCampaigns(int pageIndex) 
    { 
     var dataset = GetUserData(pageIndex).ToDataSet(true); 
     return dataset.GetXml(); 
    } 

jQuery脚本

<script type="text/javascript"> 
     var pageIndex = 1; 
     var pageCount; 
     $(window).scroll(function() { 
      if ($(window).scrollTop() == $(document).height() - $(window).height()) { 
       GetRecords(); 
      } 
     }); 
     function GetRecords() { 
      pageIndex++; 
      if (pageIndex == 2 || pageIndex <= pageCount) { 
       $("#loader").show(); 
       $.ajax({ 
        type: "POST", 
        url: "UserProfile/Default.aspx/GetCampaigns", 
        data: '{pageIndex: ' + pageIndex + '}', 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: OnSuccess, 
        failure: function(response) { 
         alert(response.d); 
        }, 
        error: function(response) { 
         alert(response.d); 
        } 
       }); 
      } 
     } 
     function OnSuccess(response) { 
      var xmlDoc = $.parseXML(response.d); 
      var xml = $(xmlDoc); 
      pageCount = parseInt(xml.find("PageCount").eq(0).find("PageCount").text()); 
      var campaigns = xml.find("Campaigns"); 
      campaigns.each(function() { 
       var campaign = $(this); 
       var table = $("#dvCampaigns table").eq(0).clone(true); 
       $(".campaignname", table).html(campaign.find("CampaignName").text()); 
       $(".description", table).html(campaign.find("Description").text()); 
       $(".campaign-id", table).html(campaign.find("CampaignID").text()); 
       $(".datecreated", table).html(campaign.find("CreatedOn").text()); 

       $("#dvCampaigns").append(table).append("<br />"); 
      }); 
      $("#loader").hide(); 
     } 
    </script> 

人y谢谢。

+0

调试JS浏览器...,给我们更多的具体数据..究竟未定义 – Kram

+0

感谢您的答复克拉姆。在Java脚本控制台上,它抛出了这个错误:POST'http://******/POLLiceWebApp/UserProfile/UserProfile/Default.aspx/GetCampaigns 404(Not Found)'。但是它找不到的方法是在代码隐藏方面。 (对不起,我出于安全原因必须用'******'替换部分url)。 –

+0

请在没有UserProfilePrefix的情况下测试以下代码。应该是这样的网址:“Default.aspx/GetCampaigns”, – Kram

回答

0

在你的AJAX你有这样一行:

url: "UserProfile/Default.aspx/GetCampaigns", 

你删除HTTP的完整路径,包括为这个职位或者是说的方式是在你的代码?这需要Web方法的相对路径或绝对路径。还要求与AJAX网络方法时,你需要使用:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)] //or whatever your return format is 
[WebMethod] 
+0

感谢您的回复Stephen。正如您注意到的,我的ajax中的url与我的代码中的方式完全相同。我还添加了这个:'[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]',但它没有改变任何东西。我仍然得到错误。 –

+0

我将代码更正为'url:“Default.aspx/GetCampaigns”',现在我在Javascript控制台上得到的错误是'500(内部服务器错误)'。有任何想法吗? –

+0

您需要此行的完整路径: url:“UserProfile/Default.aspx/GetCampaigns”,例如: url:“http://yourWebsite.com/UserProfile/Default.aspx/GetCampaigns”或url:“ /UserProfile/Default.aspx/GetCampaigns“,请注意从网站根目录开始的开始斜杠。 –

相关问题