通过if语句将经典ASP值返回到javascript中

时间:2014-11-26 14:55:39

标签: javascript asp-classic

我试图通过ASP

在javascript中设置一个值
foo('RequestMode', '<%=Request.Querystring("Mode")%>')

我想做的事情是这样的

foo('RequestMode', '<%=if (Request.Querystring("Mode")="") then 
                            Session("RequestMode")=""
                       else
                            Request.Querystring("Mode")
                       end if%>')

如果我使用开场标签

<%=

我收到错误说

  

&#39;如果&#39;运算符需要两个或三个操作数。

但是如果我使用开始标记

<&

我收到错误说

  

属性访问必须分配给属性或使用其值。

     

Request.Querystring(&#34; Mode&#34;)&lt; --- highlight

这使我相信我的代码本身没有错误。我怎样才能完成任务?

1 个答案:

答案 0 :(得分:2)

你的问题应该是你在if语句中使用的&lt;%=。您正在编写的实际上是将if语句直接打印到页面而不是在VBScript中运行它。记住

<%= %>

相当于

<% Response.Write() %>

所以你的if被写入页面。你应该写的是:

foo('RequestMode', '<% if (Request.Querystring("Mode")="") then %> 
                        <%= Session("RequestMode")="" %>
                   <% else %>
                        <%= Request.Querystring("Mode") %>
                   <% end if%>')

也作为一个注释,我留下了应该是一个错误,因为我不知道你想如何纠正它。特别是行

<%= Session("RequestMode")="" %>

应该是

<%= Session("RequestMode") %>

<% Session("RequestMode")="" %>

<%= Session("RequestMode") %>
<% Session("RequestMode")="" %>

<% Session("RequestMode")="" %>
<%= Session("RequestMode") %>

修改

只想澄清你提到的其他错误。它说的原因

Property access must assign to the property or use its value

是因为当您将&lt;%=更改为&lt;%

时,错误表明您正在访问变量并且不执行任何操作
<%=Request.Querystring("Mode")%>

工作正常,因为它实际上是

<% Response.Write(Request.Querystring("Mode")) %>

将打印到页面的行。当您删除等号时,您不再对Request.Querystring(&#34; Mode&#34;)执行操作,因为您要删除该response.write