按钮上的$ _POST变量访问失败

时间:2015-09-22 12:32:59

标签: php jquery

我很想知道如何在不重新加载/刷新的情况下从一个php表单中发送和管理2个值。这是一个简单的上下投票公式,只需点击一下即可投票。

我从表格开始:

echo "<form id='votingform' method='post'>";
echo "<button id='rateup' /><i class='fa fa-thumbs-o-up fa-2x'></i></button>";
echo "<button id='ratedown' /><i class='fa fa-thumbs-o-down fa-2x'></i></button>";
echo "<input type='hidden' value='".$id."' name='rateid' />";
echo "</form>";

然后我使用一些jquery来阻止公式提交并为测试目的添加一些可见的响应:

$(document).ready(function() {
  var form = $('#votingform');
  var submit = $('#rateup');  // submit button
  var submit2 = $('#ratedown');  // submit button

  // form submit event
  form.on('submit', function(e) {
    e.preventDefault(); // prevent default form submit

    $.ajax({
      url: '', // form action url
      type: 'POST', // form submit method get/post
      dataType: 'html', // request type html/json/xml
      data: form.serialize(), // serialize form data 
      beforeSend: function() {
        alert.fadeOut();
        submit.html('Sending....'); // change submit button text
      },
      success: function(data) {
        alert.html(data).fadeIn(); // fade in response data
        form.trigger('reset'); // reset form
        submit.html('Send Email'); // reset submit button text
      },
      error: function(e) {
        console.log(e)
      }
    });
  });
});

form.on('submit2', function(e) {
        e.preventDefault(); // prevent default form submit

        $.ajax({
          url: '', // form action url
          type: 'POST', // form submit method get/post
          dataType: 'html', // request type html/json/xml
          data: form.serialize(), // serialize form data 
          beforeSend: function() {
            alert.fadeOut();
            submit.html('Sending....'); // change submit button text
          },
          success: function(data) {
            alert.html(data).fadeIn(); // fade in response data
            form.trigger('reset'); // reset form
            submit.html('Send Email'); // reset submit button text
          },
          error: function(e) {
            console.log(e)
          }
        });
      });
    });

并添加了一些动作:

if( isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) ){

    $vote1 = $_POST['rateup'];
    $vote2 = $_POST['ratedown'];

    echo $vote1; echo $vote2;

    // sql part goes here
  }
  return;
}

$ vote1没问题,$ vote2为空。有没有人对此有所了解并可以帮助我解决这个问题?或者也许是一种更聪明的方法让这个东西起作用?感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

按钮元素不发送它们的值 - 因此没有POSTed值。 将您的元素更改为

java -Xms256M -Xmx512M

答案 1 :(得分:0)

试试这个:

$http_post = ('POST' == $_SERVER['REQUEST_METHOD']);

if($http_post)
{
    echo $_POST['submit']; // no result
    echo $_POST['test'];
}

如果您点击up,则$_POST['submit']会回显“向上”,如果您点击down,则$_POST['submit']会回显'向下'