从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>
答案 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>
代码进行刷新。