我有一个页面,我想创建一个下拉列表,然后发回我现在所在的页面。
我怎样才能做到这一点?
一个问题是,我希望所有查询字符串值也相同,除了 1 是下拉列表将覆盖的值。
如果需要,您可以在同一页面中同时使用查询字符串和表单变量。如果您使用<form method="post">
并将该操作留空,它会将表单发布回当前页面,这样就解决了一个问题。有一个警告:我不确定将操作留空是否会保持查询字符串参数不变。
如果没有,您可以尝试以下操作:(<form method="post" action="index.asp?<%= request.querystring %>">
不确定确切的语法,要点是您需要指定当前页面并在方法中添加当前查询字符串变量)。
在发布后页面上的 ASP 代码中,您可以检查 request.form 和 request.querystring。request.form 将包含您的表单发布变量。request.querystring 将包含后面的变量?在您的网址中。
HTH,埃里克
一个Javascript方法:
<html>
<head>
<script>
function jumpto(whatform, querykey) {
//get the url querystring
var url = window.location.search;
//the replace query
var queryrx = new RegExp("([?&])" + querykey + "=[^\&]+(?=&|$)", "gi");
//which item selected in dropdown
var index=whatform.pageselect.selectedIndex;
//if the first option, ignore it since it is blank
if (whatform.pageselect.options[index].value != "0") {
//is a query string available
if (url.length>0) {
//our query key is present
if (queryrx.test(url)) {
//now we replace the querystring from old to new
url = url.replace(queryrx, '$1' + querykey + '='+whatform.pageselect.options[index].value);
//clear out the question mark from the querystring
url = url.replace("?", '');
//our query key is not present, but there is querystring data
}else{
url = url.replace("?", '');
url = querykey + "=" + whatform.pageselect.options[index].value + "&" + url;
}
//no querystring data exists
}else{
url = querykey + "=" + whatform.pageselect.options[index].value;
}
//alert(url);
//this is the url we are getting bounced to
location = "mypage.asp?"+url;
}
}
</script>
</head>
<body>
<FORM NAME="form1">
<SELECT NAME="pageselect" ONCHANGE="jumpto(this.form, 'thequerykey')" SIZE="1">
<OPTION VALUE="">Choose a Page</OPTION>
<OPTION VALUE="pageA">First Page</OPTION>
<OPTION VALUE="pageB">Second Page</OPTION>
</SELECT>
</FORM>
</body>
</html>
如果您想使用 ASP 经典解决方案,您将需要使用一个函数从您的查询字符串中清除旧值 https://stackoverflow.com/a/1221672/2004151 然后将您的查询字符串打印为您的隐藏输入字段表单(下面的 MyFunctionResultsExceptPageSelect)。就像是:
<FORM ACTION="mypage.asp" METHOD="GET" NAME="form3">
<%=MyFunctionResultsExceptPageSelect("pageselect")%>
<SELECT NAME="pageselect" ONCHANGE="document.form3.submit()" SIZE="1">
<OPTION VALUE="">Choose a Page</OPTION>
<OPTION VALUE="pageA">First Page</OPTION>
<OPTION VALUE="pageB">Second Page</OPTION>
</SELECT>
</FORM>
<%
Function MyFunctionResultsExceptPageSelect(key)
Dim qs, x
For Each x In Request.QueryString
If x <> key Then
qs = qs & "<input type=""hidden"" name="""&x&""" value="""&Request.QueryString(x)&""" />"
End If
Next
MyFunctionResultsExceptPageSelect = qs
End Function
%>
如果您想获取当前页面而不是手动指定它,请使用以下内容。在 javascript 片段中,在此处使用答案: https ://stackoverflow.com/a/5817566/2004151 在 ASP 中,类似这样的内容: http: //classicasp.aspfaq.com/files/directories-fso/how-do- i-get-the-name-of-the-current-url/page.html