2012-01-11 76 views
1

我想有一個JSP這樣的:傳遞參數

<form id="form1"> 
Name is: <%=request.getParameter("name") %> 
<a href="#" onclick="fun1('<%=request.getParameter("name") %>')">Show Email Form</a> 
</form> 

<form id="form2"> 
<input type="text" name="emailid" /> 
<a href="#" onclick="fun2('$('input[name=emailid]').val()', <name required here>)">Submit</a> 
</form> 

我的JavaScript是這樣的:

function fun1() { 
//Nothing important here, just show second form 
$('#form2').show(); 
} 

function fun2(myemail, myname) { 
//Do something important here, 
//Like update email for the given name 
xmlhttp = GetXmlHttpObject(); 
var url = "updateEmail.do?email=" + myemail + "&name=" + myname; 
xmlhttp.open("POST", url, true); 
} 

事情,這裏要注意:
1)有沒有與我的表單綁定的操作,我通過Ajax提交第二個表單。
2)我需要有兩種不同的形式,第一種形式除了名稱外還有更多的元素。第二種形式除電子郵件外還有另外一組元素。 form2中只有一個函數(fun2)需要form1中的名稱參數和form2中的電子郵件ID參數。
3)Form1具有不可編輯的名稱參數,form2具有可編輯的電子郵件參數。 form2中的onclick函數使用jQuery獲取電子郵件文本輸入。
4)另一種需要考慮的情況是,如果在form1中有多個條目名稱,如使用循環的名稱列表。例如,

<form id="form1"> 
<logic:iterate id="record" name="peoplerecords" property="records"> 
    Name is: <bean:write name="record" property="name"> 
<a href="#" onclick="fun1('<bean:write name="record" property="name">')">Show Email Form</a> 
</logic:iterate> 
</form> 

將form1中的name參數寫入form2中的javascript onclick url的最佳方法是什麼?

form1: - onclick =「fun1(name);」
form2: - onclick =「fun2(email,name);」

回答

1

您可以直接把這個名字與JSP:

<a href="#" onclick="fun2($('input[name=emailid]').val(), <%=request.getParameter("name") %>)">Submit</a> 

或者你可以得到含名稱的標識和訪問它使用jQuery

Name is: <span id="nameNode"><%=request.getParameter("name") %></span> 


<a href="#" onclick="fun2($('input[name=emailid]').val(), $('#nameNode').innerHTML)">Submit</a> 

還要考慮得到的DOM節點直接在你的函數中使用所需的參數,或者在腳本部分定義onclick處理程序,以避免代碼變得混亂。注意HTML屬性中的引號,在第二個onclick處理程序中使用了兩次單引號。

+0

謝謝,這服務器爲我的目的(從來沒有想過:))但現在我想知道是否有多個條目在form1中的名稱條目。我可以在這種情況下做什麼?我已經更新了這個場景的問題。 – rishi 2012-01-11 21:41:23

0

請勿將'數據'放入您的HTML模型中。

如果您使用的是服務器端語言,請將所有數據直接傳遞到您的內聯腳本中,而不是內聯HTML。

例子:

<a onclick="alert('<?php echo $the_string;?>');">alert!</a> 

VS

<a id="alert_link">alert!</a> 

<script type="text/javascript"> 

    var the_string = <?php echo json_encode($the_string);?>; // you get javascript safe encoding with json_encode, almost for free! 

    document.getElementById("alert_link").onclick = function() { 
     alert(the_string); 
    }; 
</script> 

第二個例子可能看起來像多了很多代碼,但它是值得的,如果你有很多的這些東西。

此時,您的所有數據都以JavaScript提供,因此應該很容易將它們結合在一起。

+0

我不是來自PHP的背景,所以我不太瞭解這一點。 Java/JSP有沒有類似的選擇?這類似於使用bean - rishi 2012-01-11 21:35:12

0

由於您的名稱值是從服務器(在JSP中)寫入的,您可以直接將它寫入到fun2調用中嗎?

onclick="fun2('$(\'input[name=emailid]\').val()', '<%=request.getParameter("name") %>')"