2012-05-09 26 views
3

我對錶單操作的一個基本問題。表單動作 - 當調用HREF

這裏考慮下面的代碼,如果有的話就忽略語法。

<form action="demo_form.asp" method="get"> 
<a href="test.asp">Code testing</a> 
First name: <input type="text" name="fname" /><br /> 
Last name: <input type="text" name="lname" /><br /> 
<button type="submit">Submit</button><br /> 
</form> 

當表單提交,我可以處理在demo_form.asp如下形式變量demo_form.asp叫,

request.GET('fname') 

我怎麼可以處理表單變量當通過HREF調用test.asp ..我可以使用相同的GET或POST方法嗎?

+3

@JMCCreative:44%沒有那麼糟糕。我不知道你在說什麼電話號碼。 – Ryan

+0

只是假裝... 44%對我來說似乎不太好。 – JakeParis

+0

我如何接受正確的答案。大部分時間我點擊刻度標記 – user1050619

回答

0

如果通過鏈接調用test.asp(或HREF像你說的),你可以只處理使用GET方法的變量。所以,如果你有,例如,test.asp?fname=bob&lname=smith,這些GET變量將在TEST.ASP

你不能用POST數據做到這一點。

1

你可以通過超鏈接提交數據的唯一方法是通過GET請求。這當然會涉及您的表單中的所有字段,而不是作爲查詢參數添加到超鏈接。

您當然可以修改a元素,以便它使用onclick處理程序和JavaScript來使用DOM方法從表單中獲取數據,動態修改href屬性,然後觸發該特定錨標記的click事件。這也將是一個GET請求。

HTML:

<form action="test.asp" id="theForm"> 
    <a href="test.asp?" id="link">Code testing</a> 
    First name: <input type="text" name="fname" /><br /> 
    Last name: <input type="text" name="lname" /><br /> 
</form> 

的jQuery:

$('#link').click(function() { 
    var href = ""; 
    $('#theForm > input').each(function(event) { 
     event.preventDefault(); 
     href = $('#link').attr("href") + "&" + 
      $(this).attr("name") + "=" + $(this).attr("value"); 
     $('#link').attr("href", href); 
    }); 
    $(this).click(); // or window.location = $(this).attr("href"); 
}); 

我不知道這會帶給你什麼樣的價值,除了作爲一個練習,以瞭解更多有關DOM以及瀏覽器處理事件的方式。

不知道你想實現什麼,這很難知道爲什麼你不只是使用窗體本身。

+0

超鏈接將不包含表單數據。 '*本身*'可以被定義爲'method =「GET」',然後你可以使用一個正常的* submit *按鈕來發送該數據作爲GET請求。但是,HTML沒有什麼自動的功能可以讓你對錨定標籤進行相同的操作。 –

+0

@Kirk - 對不起,如果不清楚,但在我的回答中,我說你必須使用onclick處理程序和JavaScript來使用DOM方法從窗體中獲取數據。「也許我可以通過添加來澄清你還需要event.preventDefault()來防止超鏈接重定向你,直到你檢索到數據。你激勵我發表一個例子。 – jmort253

+0

當然,如果你明確表示通過超鏈接發佈表單數據的* only *方法是使用Javascript,那麼一切都很好。 –