Javascript不使用AJAX发布数据

时间:2014-04-06 10:01:18

标签: javascript jquery ajax forms post

大家好我在提交表格时有一个Anchr标签,如下所示:

<form id="myForm" action="main/postdata">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br><br>
<a onclick="myFunction()" value="Submit form">click</a>
</form>

<script>
function myFunction()
{
document.getElementById("myForm").submit();
}
</script>

无论如何我可以在用户点击时附加一个附加值的POST数据,所以如果我有2个标签,我可以确定哪一个被点击了?例如:

 <form id="myForm" action="main/postdata">
    First name: <input type="text" name="fname"><br>
    Last name: <input type="text" name="lname"><br><br>
    <a onclick="myFunction()" value="Submit form">click</a>  -- ? check which 1 was clicked?
    <a onclick="myFunction()" value="Submit form">click 2 </a>
 </form>

我知道使用按钮来做这件事会更容易 - 但我正在寻找JS / JQUERY解决方案,如果有请的话,非常感谢!

4 个答案:

答案 0 :(得分:1)

HTML:

 <form id="myForm" action="main/postdata">
    First name: <input type="text" name="fname"><br>
    Last name: <input type="text" name="lname"><br><br>
    <input type="hidden" value="" id="check_value1" name="check_value1">
    <input type="hidden" value="" id="check_value2" name="check_value2">
    <a onclick="document.getElementById('check_value1').value= 'yes';myFunction()" value="Submit form">click1</a>
    <a onclick="document.getElementById('check_value2').value= 'yes';myFunction()" value="Submit form">click2</a>
    </form>

JS:

function myFunction()
{
  document.getElementById("myForm").submit();
}

当您在服务器端获得POST个数据时,检查点击了哪一个.. check_value1check_value2中的某个值的值为“是”

答案 1 :(得分:0)

您可以更改其中的功能:

<a onclick="myFunctionOnClick()" value="Submit form">click</a>  -- ? check which 1 was clicked?
<a onclick="myFunctionOnClick2()" value="Submit form">click 2 </a>

答案 2 :(得分:0)

解决此问题的最佳方法是使用提交按钮而不是JavaScript提交表单。您可以设置提交按钮的样式以便随意查看。

<input type="submit" name="something" value="click">
<input type="submit" name="something" value="click 2">

然后检查服务器上something的值。只有点击的提交按钮才会成功。


(更糟糕的)解决方案是在提交表单之前使用JavaScript向表单添加隐藏的输入。

<a onclick="myFunction(1)" value="Submit form">click</a>  -- ? check which 1 was clicked?
<a onclick="myFunction(2)" value="Submit form">click 2 </a>

function myFunction(id) {
    var frm = document.getElementById("myForm");
    var input = document.createElement("input");
    input.type="hidden";
    input.name="something";
    input.value=id;
    frm.appendChild(input);
    frm.submit();
}

答案 3 :(得分:0)

您可以使用隐藏字段,在点击时更改其值,然后提交表单。您还可以将参数作为值传递给函数。

所以你的HTML,就像这样:

<form id="myForm" action="myfile.php">
    First name: <input type="text" name="fname"><br>
    Last name: <input type="text" name="lname"><br>
    <a onclick="myFunction('submit1')">click</a>
    <a onclick="myFunction('submit2')">click 2</a>
    <input type="hidden" name="myclick">
 </form>

你是这样的jQuery代码:

<script>
function myFunction(btnValue) {
  $("input[name='myclick']").val(btnValue);
  $("myForm").submit();
}
</script>

此外,我更改了<form action>值,因为我不了解您要通过将其设置为action="main/postdata"来实现的目标。行动应该指向目的地。