0

送信ボタンのないフォームのコンテキストでは、$_POST 変数が設定されない理由がわかりません。これが私のコードです:

<?php
  $view="blablabla";
?>
<form class="" method='POST' accept-charset="UTF-8" action='index.php'>
<p>
  <textarea rows="4" cols="60" name='article' id='article' WRAP=SOFT>
    <?php
      echo $view;
    ?>
  </textarea>
</p>    
<p>
  <input type="button" name='do1' id='do1' value="do 1"/>
  <input type="button" name='do2' id='do2' value="do 2"/>
</p>
</form>

<?php
  var_dump("POST :",$_POST);
?>

2 つのボタンのいずれかをクリックすると、var_dump は $_POST に値を表示するべきではありませんか?

4

1 に答える 1

7

いいえ、フォームを送信するには、入力タイプを送信<input type="submit"/>)する必要があります。$ _POST配列に値が入力されるようにするには、POSTリクエストをPHPスクリプトに送信する必要があります:)

編集:送信する必要はありません、上記のコードの場合、ボタンに外部トリガーがないため、送信ボタンが必要になります:)

複数のボタンの問題の場合:

JavaScript / Ajaxを使用してボタンクリックでPOSTリクエストをPHPに送信する場合は、次のようなことを行う必要があります。

if (isset($_POST['x'])) {
    var_dump($_POST);
    exit;
}

これは、スクリプトがページ(つまりフォーム)のHTMLを返さないようにするためです。別のページにPOSTしている場合、これは問題ではありません:)

以下は、ボタンクリック時にPOSTデータを送信するためのサンプルjQueryコードです(正確なコードは提供されません。必要に応じて変更する必要があります)。

$('#my_button').click(function(){
    $.post('myfile.php', data, function(response) { //the var 'data' is the POST data you're sending
        // handle response here, the data being in the response variable 
    });
});
于 2012-11-06T23:35:12.697 に答える