2016-07-13 15 views
0

を動作しない、私はそれが何の問題もなく必要としてイベントが上記の作品ボタンのフォームPOST

<?php 
//Define attributes  
echo'<input type="submit" id="toggler" name="add_friend"class=button  
value="Add '. $output1['username'].' As A Friend ?" onClick="action();"/> 
</input>'; 
?> 
//Hide the button 
<script> 
var hidden = false; 
function action() { 

    if(!hidden) { 
     document.getElementById('toggler').style.visibility = 'hidden'; 
    } 
} 

をトリガーされると非表示になります簡単なボタンを持っている、しかし、私はのためにmethod=POSTを取得するためにフォームを追加するときボタンは非表示になりませんも私のPOSTは、私は、このボタンの皮と私のPOSTがに渡されるように正しいことができますどのように$_POST['add_friend']

echo ' <form method="post" > 

<input type="submit" id=toggler name="add_friend" class="button"  

value="Add '. $output1['username'].' As A Friend ?" onClick="action();"/> 
</input> 
</form>'; 

を作るん私のissetコードしてください。

if (isset ($_POST['add_friend'])){ 
    //rest of my code once the button is clicked and hidden 

ありがとうございます。

+0

送信をクリックしてすべてが再表示されるだけでページが再読み込みされないことを確認してください。 – j08691

答えて

0

カップルの事を。あなたのフォームには「メソッド」の前に余分な二重引用符があり、<form>タグにはaction="#"を追加する必要があります。これは、フォームの結果を現在のページに送信するようブラウザに指示します。送信ボタンに追加するのではなく、非表示フィールドを追加してデータを送信することをお勧めします。これを試して、それが動作するかどうか確認してください。あなたは非同期要求を作りたい場合は、AJAXと解決策を検討する必要があります(EGは、もう一度ページをロードせずに、いくつかのリクエストを送信する)ので、これは基本的に、ページをリロードしますクマの心に

if (isset($_POST['add_friend'])) { 
    var_dump($_POST['add_friend']); 
} 
echo ' 
<form method="post" action="#"> 
    <input type="hidden" name="add_friend" value="'.$output1['username'].'"> 
    <input type="submit" id="toggler" class="button" value="Add '. $output1['username'].' As A Friend ?" onClick="action();"/>  
</form> 
'; 

0

あなたはより多くの情報やコピー/ペースト、すべてを提供しなかった場合を除き、あなたはここで、余分な引用を持っているように見える。これで間違っている

echo ' <form "method="post" > 
+0

メソッドの前に見えて、閉じていない第3引用があります –

+1

コピーはペーストエラーでしたが、良いキャッチイーグルアイでした –

0

フォームに入力をラップすると、ネイティブにフォームが送信され、JavaScriptが起動されます。 ajaxソリューションを使用する場合は、サブミット・イベントに結びつけて、デフォルトのアクションを防ぎます。 (ここではjqueryを使用しています):

$("form").on("submit", function(event) { 
    event.preventDefault(); 

    // serialize() will get the form data, which can be used in ajax call 
    console.log($(this).serialize()); 
}); 
0

あなたのJSはおそらく要素を隠しています。フォームが送信されると(POST)、ページが更新され、ボタンが再び表示されます。

フォーム提出をハイジャックして、リクエストをajaxで処理したいと思うようです。

次のコード例は、Phpフォーム処理で同様の問題を示しています。あなたは(私は必要なJavascriptを省いています)お好みに合わせて適応することができます:

<?php 
$feedback = null; 

$people = array(
    1 => 'Samuel', 
    2 => 'Fred', 
    3 => 'Roger', 
    4 => 'Mavis' 
); 

$friends = array(3); // i.e. Roger 

if($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $add_friend = isset($_POST['add_friend']) ? $_POST['add_friend'] : null; 
    if(array_key_exists($add_friend, $people) && !in_array($add_friend, $friends)) { 
     array_push($friends, $add_friend); // You probably want to save state here 
     $feedback = 'Added ' . $people[$add_friend] . ' as friend.'; 
    } 
} 


?> 
<?php echo isset($feedback) ? $feedback : ''; ?> 
<form method="post"> 
    <?php foreach ($people as $key => $person) { ?> 
     <button name= 
     "add_friend" onClick= 
     "action();" value= 
     "<?php echo $key ?>" 
     <?php echo in_array($key, $friends) ? 'disabled' : '' ?> 
     > 
     Friend <?php echo $person ?> 
    </button> 
    <?php } ?> 
</form> 

チェックボックスは、こちらのボタンより良いフィットかもしれません。

関連する問題