2009-07-13 60 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中的)一樣,抑制與該事件相關的默認操作。