如何在ASP Classic中调用子程序进行分页

时间:2015-04-08 15:27:46

标签: vbscript asp-classic

我试图在单击Back或Next时,递增或递减变量(tranquerypage),然后使用变量的新值重新加载当前页面,然后可以在加载页面时查询该值。但是,我尝试了一些方法,并且是ASP经典的新手,我遇到了让它正常工作的问题。 vbscript方法没有工作。这是我到目前为止所拥有的 -

    <%
tranquerypage = session("tranquerypage")
if session("tranquerypage") = "" then 
session("tranquerypage") = 1 
end if
%>

<INPUT TYPE=button Name=temp Value="Back" target="_self" onClick="<%call back(tranquerypage)%>">&nbsp;&nbsp;<INPUT TYPE=button Name=temp Value="Next" target="_self" onClick="<%call nextpage(tranquerypage)%>">
</td>
</tr>

    <%
sub back(tranquerypage)
tranquerypage = tranquerypage - 1 
end sub

sub nextpage(tranquerypage)
tranquerypage = tranquerypage + 1
end sub
%>

1 个答案:

答案 0 :(得分:3)

HTML / JavaScript代码在浏览器中运行,ASP代码在服务器上运行,很可能在两台完全不同的计算机上运行。

此外,浏览器运行JavaScript,这与ASP完全不兼容。

这意味着一件事:您无法通过HTML调用任何ASP函数。故事结束。


与Web服务器通信的接口是:HTTP消息。换句话说,只有通过请求URL,您才能通知服务器客户端上的操作。

因此,您需要做的第一件事就是确定您希望如何向服务器传达您的意图,即URL的外观。

怎么样:

http://yourserver.com/yourpage.asp?page=next
http://yourserver.com/yourpage.asp?page=prev
http://yourserver.com/yourpage.asp?page=5

现在我们确定了URL,让ASP页面理解它。网址参数位于Request集合中。

<% 
Option Explicit ' never work without Option Explicit

Dim page, requestedPage, MAX_PAGE

requestedPage = LCase(Request("page"))
MAX_PAGE = 10

If requestedPage = "next" Then
   page = NextPage()
ElseIf requestedPage = "prev" Then
   page = PrevPage()
Else
   page = SetPage(requestedPage)
End
%>

现在你的ASP代码知道如何处理&#34;页面&#34;网址参数。

让我们定义执行页面实际切换的功能。

<% 
Function CurrentPage
    If IsNumeric(Session("page")) Then
        CurrentPage = Session("page")
    Else
        CurrentPage = 1
    End If 
End Function

Function NextPage
    NextPage = SetPage(CurrentPage() + 1)
End Function

Function PrevPage
    PrevPage = SetPage(CurrentPage() - 1)
End Function

Function SetPage(newPage)
    ' range check!
    If Not IsNumeric(newPage) Then
        Session("page") = 1
    ElseIf page < 1 Then
        Session("page") = 1
    ElseIf page > MAX_PAGE Then
        Session("page") = MAX_PAGE
    Else
        Session("page") = Int(newPage)
    EndIf
    SetPage = Session("page")
End Function
%>  

向服务器发送HTTP消息的最简单方法(&#34;请求URL&#34;)带有链接。所以你的HTML看起来像这样:

<a href="/yourpage.asp?page=prev">Previous Page</a>
<a href="/yourpage.asp?page=5">Page 5</a>
<a href="/yourpage.asp?page=next">Next Page</a>

剩下的任务:

  • 当然,输出实际的内容页面。
  • 了解如何输出更多链接,而不仅仅是Page 5
  • 了解如何将MAX_PAGE设置为比10更合适的内容。
  • 了解如何使用不同的页面大小。
  • 最后:考虑放弃整个&#34;当前&#34; /&#34; next&#34; /&#34; prev&#34;页面的概念。每页数据都可通过其URL唯一地进行寻址。如果您在http://yourserver.com/yourpage.asp?page=5,它会自然地跟随上一页和下一页 - 4和6.找出一种完全通过URL参数进行页面切换并且没有任何会话或cookie值的方法。