2010-10-11 17 views
1

我正在编辑其他人的代码,用ASP的服务器端JS编写,并且遇到了可能有一个非常简单的解决方案的问题。查找JS-ASP中是否存在URL参数

我从URL PARAM输出一些像这样的代码:

<%=Request.QueryString("param")%> 

的问题是,如果该参数不存在,我需要其他人做一些事情。所以,我想:

<% 
    var param = Request.QueryString("param"); 
    if (!param) { param = "Some Default Value"; } 
%> 
<%=param%> 

的问题是,if似乎从来没有评估到true,即使在URL参数是丢失。我猜测!image的情况在这里不起作用。我的测试条件应该是什么?

(请放弃这样做网址参数的转义,以防止XSS严厉的警告。)

回答

-1

在JSP中,你必须使用getParameter,而不是QueryString

在JSP中的代码将

<% 
    String param = request.getParameter("param"); 
    if (param.length() == 0) { param = "Some Default Value"; } 
%> 
+0

我没有使用JSP。这是一个ASP网站,用Javascript代替VBScript编写页面。 – levik 2010-10-11 20:16:41

2

这就是我所做的。

function qs(name) { 
    var v = Request.QueryString(name), 
     v2 = "x" + v + "x"; 
    if ((v2=="xundefinedx") && (v != "undefined")) { 
     return null; 
    } 
    return v + ''; // force string 
} 
+0

这个使用Cheran的答案的稍微简单的形式是:'if(param.count == 0 || param +''=='')param ='一些默认值';' – EK0 2015-05-18 16:36:58

4

正确的方法来检查查询字符串参数是否存在与Count属性:

<% 
    var param = Request.QueryString("param"); 
    if (param.Count === 0) { param = "Some Default Value"; } 
%> 
<%=param%> 

据为Request.QueryString文档,

的Request.QueryString的价值(参数)是QUERY_STRING中发生的参数值的所有 值的数组。

这可能是为什么简单if (!param)检查不起作用。

+0

这很好用,如果你想要检测参数是否存在,但如果参数为空,则不会。例如,URL http://example.com?foo ='将返回1而不是0.如果您需要测试空值,Cheeso的答案会更好。 – EK0 2015-05-18 16:20:57