2017-09-30 12 views
1

からthis earlier thread私は、フォームデータがjavascript submit()コマンドを使ってPOSTメソッドによって送信されることを知ったと思います。しかし、私はそれを働かせることはできません。このデモは、目的に関しては明白ではありませんが、私には負担してください。私はちょうど私のために働かないように見えるこの特定のコマンドをテストしたいと思った。手伝ってくれませんか?通常の送信ボタンをクリックすると投稿データは送信されますが、リンク経由でjavascriptを有効にすることはできません。
javascript submit()コマンドが私の投稿データを送信しない

<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> 

答えて

3

以下を行う必要があります。event.preventDefault();<a>からデフォルトの動作を。問題は、そうしないと、ページがリロードする原因、つまり<a>タグが原因です。したがって、データを送信しても、送信されたデータが失われたページが更新されます。

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

他の解決策は次のように<a>タグのhref#を追加することです:これはまた、リフレッシュをやってから<a>タグを防ぐことができます

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

+1

はい。どうもありがとうございました。どのような典型的な私のすべての努力は、ここで問題ではなかったsubmit()コマンドとその構文に集中していた。 – danbae

関連する問題