jquery找出在AJAX发布中单击了哪个按钮

时间:2012-10-04 14:01:21

标签: jquery ajax post

我有一个带有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(); ?>

3 个答案:

答案 0 :(得分:3)

您可以为点击的按钮隐藏输入

单击两个按钮之一时

获取单击按钮的值,例如delete

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

答案 1 :(得分: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     
         });

答案 2 :(得分: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');
            })

     });
}