3

確認と削除の2つのボタンがあるフォームがあります。非表示の入力要素 ID を投稿しています。[確認] をクリックすると、要素 ID を使用してアクションが実行されます。[削除] をクリックすると、要素 ID を持つ DB 内のエントリが削除されます。さて、問題は、 を実行するprint_r($_POST); exit();と、入力要素 ID が正しく返されることです。しかし、どのボタンがクリックされたかはわかりません。単一のフォームでどのボタンが正確にクリックされたかを調べる方法はありますか? 両方のボタンが同じフォームに存在する必要があります。

私が試したコードは次のとおりです。

jQuery

    var dataString = $('#form_confirm_delete').serialize();

    $.ajax({

              type: "POST",
              url: "ajaxpage.php",
              data: dataString,
              dataType: 'json',
              cache: false,       
              success: (function(response) 
                {
                    alert('Yes');
                })

         });

PHP ページ (ajaxpage.php):

<?php print_r($_POST); exit(); ?>
4

3 に答える 3

3

クリックされたボタンの非表示の入力を持つことができます

2 つのボタンのいずれかがクリックされたとき

インスタンスの削除など、クリックされたボタンの値を取得します

<button id="deleteButton" value="delete">Delete</button>

クリックされたボタンの値を次のような変数に保存します

$("#deleteButton").click(function(){
  var thebuttonclicked =$(this).attr("value");

次に、非表示フィールドの値を設定します

$('input[name=theclicked]').val(thebuttonclicked);

送信すると、theclicked という名前の投稿を取得できます。http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2クリックしたボタンをサブミットしてもこの方法の方が良いと思いますが、jqueryシリアライズはクリックしたボタンを含めません。シリアル化の詳細については、http://api.jquery.com/serialize/ を参照してください。

于 2012-10-04T14:17:42.007 に答える
2

このようなものを使用できます

url: "ajaxpage.php?button="+id,

$("#BUTTON1").click(function(){
var url="ajaxpage.php?button="+this.id,
"
})

サーバー側では、その変数を取得できます

または、投稿変数を使用できます

var id=this.id;
$.ajax({

              type: "POST",
              url: "ajaxpage.php",
              data:{"dataString": dataString,"id":id},
              dataType: 'json',
              cache: false,       
              success: (function(response) 
                {
                    alert('Yes');
                })
           // you can use this variable id server-side     
         });
于 2012-10-04T14:04:34.820 に答える
2

次のようにして、両方のボタンをリッスンできます。

$( '#delete_button' ).click(function(){
     submitForm( 'delete' );
}); 

$( '#submit_button' ).click(function(){
     submitForm( 'submit' );
}); 

そして、単一の関数でパラメーターを渡します。

function submitForm( type ){

    var dataString = $('#form_confirm_delete').serialize();
    dataString += "&type=" + type; 
    $.ajax({

          type: "POST",
          url: "ajaxpage.php",
          data: dataString,
          dataType: 'json',
          cache: false,       
          success: (function(response) 
            {
                alert('Yes');
            })

     });
}
于 2012-10-04T14:05:48.590 に答える