如何使用ajax调用检查php文件中单击了哪个按钮

如何使用ajax调用检查php文件中单击了哪个按钮,php,javascript,ajax,Php,Javascript,Ajax,我有一个表单post.php,其中用户输入数据,而receivepost.php中输入的数据通过ajax post传输。我希望在receivepost.php中实现以下功能: if(button save is pressed) { save to database }else if(button retrieve is pressed) { retrieve from database } 我尝试在revievep

我有一个表单post.php,其中用户输入数据,而receivepost.php中输入的数据通过ajax post传输。我希望在receivepost.php中实现以下功能:

        if(button save is pressed) {
            save to database

        }else if(button retrieve is pressed) {
          retrieve from database
}
我尝试在revievepost.php上使用isset($\u POST['submit']),但它没有检测到按下的按钮。ajax帖子正在运行,所有数据都可以在receivepost页面上找到。我有另一个解决方案,即创建两个不同的php文件,并根据按下的按钮运行它们,但我认为有一个更好的解决方案

以下是我的ajax调用:

$("document").ready(function () {

  $("#submit").click(function () {

        var xmlhttp;

        // test browsers
        if(window.XMLHttpRequest) {

          xmlhttp = new XMLHttpRequest();

        }else {
          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        // get the values of textboxes
        var desc_text = $("#desc").val();
        var speed_text = $("#speed").val();
        var tarea_text = $("#tarea").val();

        // variable to hold value of textboxes
        var content = "desc=" + desc_text + "&speed=" + speed_text + "&tarea=" + tarea_text;

        // open the request
        xmlhttp.open("POST", "receivepost.php", true);

        // set header
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

        // check xmlhttp state and status and display text in div
        xmlhttp.onreadystatechange = function() {
          if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

           document.getElementById('para').innerHTML = xmlhttp.responseText;
          }

        }
        // send the content of the textboxes
        xmlhttp.send(content);


      });
   });
这是我的post.php表单:

<form id="myform">

    <label for="description">Description:</label>
    <input type="text" id="desc" name="desc" /><br/>


    <label for="speed">Speed: </label>
    <input type="text" id="speed" name="speed" /><br/>

    <textarea id="tarea" cols="10" rows="10" name="tarea"></textarea><br/>

    <input type="button" id="submit" name = "submit" value="Save">
    <input type="button" id="retrieve" name="retrieve"  value="Retrieve">

 </form>
<div id="para"></div>

说明:

速度:


尝试向内容中添加一个名为button pressed的额外参数,稍后可在receivepost.php中使用该参数,如下所示:

if($_POST['button-pressed']=="save"){  
    //savetodb code  
}
else if($_POST['button-pressed']=="retrieve"){  
    //retreivefromdb code  
}
也许您有两个JavaScript函数,每个按钮上有一个:

$("#submit").click(function () {
    var content = "button-pressed=save" + "&desc=" + desc_text + "&speed=" + speed_text + "&tarea=" + tarea_text;

$("#retrieve").click(function () {
    var content = "button-pressed=retrieve" + "&desc=" + desc_text + "&speed=" + speed_text + "&tarea=" + tarea_text;
希望这有帮助?


<input type="button" id="submit" name ="submit" value="save" onClick="fnc(this.id)">
<input type="button" id="retrieve" name="retrieve"  value="retrieve" onClick="fnc(this.id)">
<script type="text/javascript">
function fnc(myid) {

var val=document.getElementById(myid).value;
alert(val);
}
 </script>
功能fnc(myid){ var val=document.getElementById(myid).value; 警报(val); }
为什么不尝试而不是
if(设置($\u POST['submit']){code here}
一些不同的东西,比如
if(!empty($\u POST['submit']){code here}
。。它检查其中是否有数据,而不是检查是否已设置。这样可以避免设置,只需查看您按下的按钮是否有数据发送。我认为这更可靠。我尝试过如果(!empty($_POST['submit']){echo'it not empty';}并将其发布到div上,它不起作用。我只是测试了submit按钮,但检索也应该可以。gdoron是对的,但你的解释更清楚。谢谢:)