2009-07-13 39 views
0

在我最后一个问题'HTML: target=”_blank” for a drop-down list'和Andrew的替代方法中,与Christoph讨论中出现了这个问题。Javascript在服务器端的窗体?

问题:运行代码服务器端,因为有些用户缺乏Javascript支持。情况是这样here.

一些建议形式:

Christoph的建议:

<form action="path-to-redirection-script" method="GET" target="_blank" 
onsubmit="window.open(this.elements['foo'].value); return false;"> 
<select name="foo" size="1"> 
    <option value="http://google.com">google</option> 
</select> 
<input type="submit" value="go"> 
</form> 

Alternative method by Andrew:

<form onsubmit="this.js_enabled.value=1;return true;"> 
    <input type="hidden" name="js_enabled" value="0"> 
    <input type="submit" value="go"> 
</form> 

问:你会如何做服务器边脚本克在形式的情况下?

+0

Gab Royer:我将概述这些建议。 C的方法完全依赖于服务器,每次从服务器获取脚本。相反,如果用户没有JS支持,则A的方法仅从服务器获取代码。否则,客户端运行JS。 – 2009-07-13 23:29:41

+2

您允许在您的服务器上使用哪种脚本语言? – 2009-07-13 23:35:41

+0

cwrea:zsh,python和lua。 – 2009-07-13 23:38:50

回答

2

实际上,它取决于您要使用的服务器端语言。

但是,就像读出POST和GET Values中的值一样简单,表单为您提供了值。

即PHP:

if($_POST["js_enabled"] == 0) 
{ 
    doSomething(); // Redirecting 
} 

但是不要忘记,以验证所有值。

好运,
rAyt

编辑

你去那里(虽然相当不错的答案)

How are POST and GET variables handled in Python?

1

有没有需要任何额外的代码或检查脚本在服务器端:由于onsubmit处理程序中的return false,如果处理程序执行,将不会提交!

从事件处理程序返回false与调用event.preventDefault()(IE中的)一样,抑制与该事件相关的默认操作。