添加或替换经典ASP中的查询字符串参数
问题描述:
我在每个页面上都包含header.asp中的一组链接;这些链接的href属性设置为当前页面加上链接ID参数。有时候,链接引用的页面将有查询字符串参数,但有时候不会。如果当前页面URL包含linkID参数,我需要将其替换,否则我需要将其添加到当前URL。添加或替换经典ASP中的查询字符串参数
我串联Request.ServerVariables( “SCRIPT_NAME
”)和Request.ServerVariables(“ QUERY_STRING
”)为变量页面名来获得当前页面的URL。不幸的是,我正在使用经典的ASP/VBScript。
我想我需要使用reg ex,但我不擅长它,尤其是在经典的ASP中。当我需要替换元素时,问题出现了,因为linkID参数的值可能会发生变化,所以简单的Replace方法将不起作用。
答
您可以检查参数是否已经在查询字符串Request.QueryString("linkID") = ""
中,如果不是,则只需追加,如果它存在,则使用函数更新该值。只要你没有大量的参数,你不需要大量优化,但是你可能不会使用ASP,这样的事情就没有问题。
Function updateQueryStringParam(key, value)
Dim qs, x
For Each x In Request.QueryString
qs = qs & x & "="
If x = key Then
qs = qs & value & "&"
Else
qs = qs & Request.QueryString(x) & "&"
End If
Next
If Len(qs) > 0 Then
If Right(qs, 1) = "&" Then
qs = Left(qs, Len(qs)-1)
End If
End If
updateQueryStringParam = qs
End Function
您可以为检查创建另一个函数调用,然后使用上面的函数进行更新;
Function setQueryStringValue(key, value)
Dim qs
If Request.QueryString(key) = "" Then
If Len(qs) > 0 Then
qs = qs & "&"
End If
qs = key & "=" & value
Else
qs = updateQueryStringParam(key, value)
End If
setQueryStringValue = qs
End Function
你现在在header.asp中有一个字符串的具体例子,当前页面的URL和disired结果会有所帮助。通过完成创建测试数据的工作,您可以获得更快的答案,而不是让我们为您想象。 – AnthonyWJones 2009-08-03 10:44:12
感谢您的建议;我会确保未来的任何问题对读者更有帮助。 – Rich 2009-08-03 11:03:29