在多个javascript函数之间传递参数

时间:2012-01-11 20:57:27

标签: javascript jquery ajax parameters html-form

我想要这样的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)我需要有两种不同的形式,第一种形式除了Name之外还有更多元素。除了电子邮件之外,第二种形式还有另一组不同的元素。 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(电子邮件,姓名);”

3 个答案:

答案 0 :(得分:1)

您可以直接将名称放入JSP:

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

或者你可以给包含名称的dom节点一个id并使用jQuery访问它

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


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

还要考虑直接在函数中获取所需的参数,或者在脚本部分中定义onclick处理程序,以避免代码变得混乱。注意HTML属性中的引号,在第二个onclick处理程序中使用了两次单引号。

答案 1 :(得分: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形式提供,因此应该很容易将它们组合在一起。

答案 2 :(得分:0)

因为您的名称值是从服务器写入的(在JSP中),您可以直接将它写入您的fun2调用吗?

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