javascript submit()命令不发送我的帖子数据

时间:2017-09-30 08:41:42

标签: javascript jquery forms post

this earlier thread我以为我了解到可以使用javascript submit()命令通过POST方法发送表单数据。但我无法让它发挥作用。这个演示在目的上并没有明显的意义,但对我有所帮助。我只是想测试这个看起来不适合我的特定命令。你能帮我么?单击常规提交按钮可以发送帖子数据,但是通过链接激活javascript不会。

<html><body>

<?php
$self = $_SERVER['PHP_SELF'];
$posttext = file_get_contents('php://input');
echo "Received input: ".chr(34).$posttext.chr(34)."<br><br>";
echo "<form id='test' action='{$self}' method='post'>";
?>
Please fill in the fields with any text:<br><br>
foo: <input type="text" name="foofield"><br><br>
bar: <input type="text" name="barfield"><br><br>
<input type="submit" value="Submit button works"><br><br>
<a href="" id="submitlink">Submitting by JS not working – why?</a>
</form>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
jQuery(function($) {
$(document).ready(function(){
$("a#submitlink").click(function(){
alert("Yes, the link has been clicked. It is not that.");
$("form#test").submit();
});
});
});
</script>
</body></html>

1 个答案:

答案 0 :(得分:3)

您需要event.preventDefault();来自<a>的默认行为。问题是,如果您不这样做,页面重新加载会导致<a>标记的作用。因此,即使您提交数据,您也会刷新提交数据丢失的页面。

$("a#submitlink").click(function(event){
    event.preventDefault();
    $("form#test").submit();
});

另一种解决方案是在#标记的href中添加<a>,如:

<a href="#" id="submitlink">Submitting by JS not working – why?</a>

这也会阻止<a>代码进行刷新。