0

Colorbox で開き、Ajax/JQuery を介してそれ自体に送信されるフォームがあります。ただし、渡されたデータには送信ボタン自体の値が含まれていないようです。複数の送信を使用するか、1 つだけを使用するかに関係なく、$_POST['submitButton'] にはデータがなく、isset() または empty() に応答しません。

ただし、フォームの残りの部分は問題なく投稿されます。$_POST['name'] と $_POST['email'] をエコーできますが、$_POST['submitButton'] はエコーできません

これが私のフォーム(の簡素化されたバージョン)です:

<form id="sub-process" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input name="name" type="text" value="">
<input name="email" type="text" value="">
<input name="submitButton" type="submit" value="Submit">
</form>

HTTP リクエストではなく、AJAX 経由で送信されるフォームを処理する jquery を次に示します。

jQuery(function(){
jQuery('.cbox-form').colorbox({maxWidth: '75%', onComplete: function(){
cbox_submit();
}});
});

function cbox_submit()
{
jQuery("#sub-process").submit(function(){
jQuery.post(
  jQuery(this).attr('action'),
  jQuery(this).serialize(),
  function(data){
    jQuery().colorbox({html: data, onComplete: function(){
      cbox_submit();
    }});
  }
);
return false;
  });
}
4

3 に答える 3

1

これは古い質問だと思いますが、@itachi が正しい答えを持っていることを理解していないようです。

serialize メソッドは、送信ボタンから値を返すことはありません。投稿に送信ボタンは返されません。非表示のフォーム フィールドを使用し、ボタンにクリック イベントを追加することをお勧めします。

于 2014-07-08T19:32:28.420 に答える
0

使ってみて$_POST['submitButton']

于 2012-11-16T20:38:22.513 に答える
0

jQuery の serialize() 関数は、ちょっと風変わりで特殊です。多くのシナリオではあまり役に立たないと思います。serializeObjectプラグインを試してみてください。serialize() が機能しない場合でも、多くの場合に機能することがわかりました。

于 2012-11-16T21:03:11.983 に答える