2012-01-11 103 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") %>')"