2010-10-11 18 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