2016-11-25 153 views
3

我试图检测哪个按钮被jQuery按下,然后服务器端根据结果做不同的事情。检测哪个按钮被按下

jQuery工作正常(虽然我可能已经以一种习惯的方式去了)但我无法弄清楚为什么在我的代码中按下任何按钮我得到相同的响应从PHP:“添加按钮检测到“。我希望有人能告诉我我错了什么?

jQuery的

$(document).ready(function() { 
    $(".btn_add").on("click", function() { //If add btn pressed 
     var id = this.id; 
     var url = "process_ajax4.php?btn=" + this.id; 

     var formdata = $('.myForm').serialize(); 
     $.post(url, formdata, 
      function(data) { 

       $("#results").html(data); //Response 


      }); 
    }); 
    $(".btn_remove").on("click", function() { //If remove btn pressed 
     var id = this.id; 
     var url = "process_ajax4.php?btn=" + this.id; 

     var formdata = $('.myForm').serialize(); 
     $.post(url, formdata, 
      function(data) { 

       $("#results").html(data); //Response 

      }); 
    }); 

}); 

php的

<?php 
$btn=$_POST["btn"]; //Other posted variables removed for simplicity 

if($btn="btn_add"){ 

    echo "<h1>Add button detected</h1>"; 
//Do stuff 

} 
elseif($btn="btn_remove"){ 

    echo "<h1>Remove button detected</h1>"; 
//Do other stuff 
} 
?> 

HTML表单

<td> 
    <form id=\ "myForm\" class=\ "myForm\" action=\ "\" method=\ "post\" enctype=\ "multipart/form-data\"> 
     <input type=\ "hidden\" name=\ "user_id\" value=". $collab_userid." /> 
     <input type=\ "hidden\" name=\ "id\" value=".$upload_id." /> 

     <button type=\ "submit\" id=\ "btn_remove\" class=\ "btn_remove\" name=\ "btn_remove\">Remove</button> 
     <button type=\ "submit\" id=\ "btn_add\" class=\ "btn_add\" name=\ "btn_add\">Approve</button> 
    </form> 
</td> 
+0

你用'=',而不是''==比较字符串提交。 – julekgwa

回答

3

您应该添加按下按钮,您formdata,否则点击无法被检测到。

$(document).ready(function() { 
    $(".btn_add").on("click", function() { //If add btn pressed 
     var id = this.id; 
     var url = "process_ajax4.php?btn=" + this.id; 

     var formdata = $('.myForm').serialize(); 
     formdata += "&btn=btn_add"; // added the btn 
     $.post(url, formdata, 
      function(data) { 

       $("#results").html(data); //Response 


      }); 
    }); 
    $(".btn_remove").on("click", function() { //If remove btn pressed 
     var id = this.id; 
     var url = "process_ajax4.php?btn=" + this.id; 

     var formdata = $('.myForm').serialize(); 
     formdata += "&btn=btn_remove"; // added the btn 
     $.post(url, formdata, 
      function(data) { 

       $("#results").html(data); //Response 

      }); 
    }); 

}); 
0

我觉得你的代码看起来确定。

我想在php中不能比较字符串= 您可能需要将其更改为strcmp(strA,strB)== 0以确保输入参数是添加按钮或删除按钮。

1

更改PHP代码如下

<?php 
    $btn=$_POST["btn"]; //Other posted variables removed for simplicity 

    if ($btn=="btn_add") { 
     echo "<h1>Add button detected</h1>"; 
    //Do stuff 
    } elseif ($btn=="btn_remove"){ 
     echo "<h1>Remove button detected</h1>"; 
    //Do other stuff 
    } 


?> 
1

不必有jquery button处理两个独立的功能。您也可以从你的代码,因为你是检测单击事件

$(document).ready(function() { 
 
    $("button").on("click", function() { //If add btn pressed 
 
     var id = this.id; 
 
     
 
     var url = "process_ajax4.php?btn=" + this.id; 
 
     console.log(url); 
 
     var formdata = $('.myForm').serialize(); 
 
     $.post(url, formdata, 
 
      function(data) { 
 

 
       $("#results").html(data); //Response 
 

 

 
      }); 
 
    }); 
 
    }); 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<td> 
 
    <form id="myForm" class="myForm" action="\" method= "post" enctype="multipart/form-data"> 
 
     <input type="hidden" name="user_id" value=". $collab_userid." /> 
 
     <input type="hidden" name="id" value=".$upload_id." /> 
 

 
     <button type="submit" id="btn_remove" class="btn_remove" name= "btn_remove">Remove</button> 
 
     <button id="btn_add" class= "btn_add" name="btn_add">Approve</button> 
 
    </form> 
 
</td>

删除button type="submit"可以使用parse_url()parse_str()用于获取在PHP中的查询字符串。为了使用$btn=$_POST["btn"]; TBN属性必须作为一个表单数据传递,查询参数不会将可通过这个方法

<?php 
$parts = parse_url($url); 
parse_str($parts['query'], $query); 
$btn = $query['btn']; 

if($btn=="btn_add"){ 

    echo "<h1>Add button detected</h1>"; 
//Do stuff 

} 
elseif($btn=="btn_remove"){ 

    echo "<h1>Remove button detected</h1>"; 
//Do other stuff 
} 
?> 
0

你实际上并不需要jQuery代码在所有。由于两个btn_removebtn_add是提交按钮,可以查看哪个按钮,其中用于提交表单使用:

if(isset($_POST["btn_remove"])) { 
    //Remove button was pressed. 
} 
1

你的代码的工作只是让var url = process_ajax4.php,这将解决您的problem.in PHP使用==代替=,还添加e.preventDefault()到您的按钮点击,以防止形式被用action='url'

$(document).ready(function() { 
$(".btn_add").on("click", function(e) { //If add btn pressed 
    e.preventDefault(); 
    var id = this.id; 
    var url = "process_ajax4.php"; 

    var formdata = $('.myForm').serialize(); 
    formdata += "&btn=btn_add"; // added the btn 
    $.post(url, formdata, 
     function(data) { 

      $("#results").html(data); //Response 


     }); 
}); 
$(".btn_remove").on("click", function(e) { //If remove btn pressed 
    e.preventDefault(); 
    var id = this.id; 
    var url = "process_ajax4.php"; 

    var formdata = $('.myForm').serialize(); 
    formdata += "&btn=btn_remove"; // added the btn 
    $.post(url, formdata, 
     function(data) { 

      $("#results").html(data); //Response 

     }); 
    }); 

});