【问题标题】:POST variable always stays emptyPOST 变量始终为空
【发布时间】:2018-11-11 11:31:24
【问题描述】:

这是我使用 jquery.ajax 管理数据发送的方法。默认情况下发送一个空字符串,每次更改时我都会观察输入的更改并重新发送。通过控制台事情很好,但在 php 中 $this->searchField 总是有一个空字符串的值

function checkInfo(){
        if(isset($_POST['searchField'])){
            $this->searchField = json_decode($_POST['searchField']);

                if ($this->searchField != ""){
                    $this->query = "SELECT * FROM myguests WHERE firstName like '%".$searchField."%'";
                }
                else if ($this->searchField == "") {
                    $this->query = "SELECT * FROM myguests ORDER BY id";
                }
                $this->tableDisplay();
                exit();
            }
            else{
                return "error";
            }
        }

这是我的 jquery ajax 函数:

function searchGuests(users){
  var data = {
    "searchField": users
  };
  console.log(data);
  $.ajax({
      type: "POST",
      dataType: "text",
      url: "controllers/manageTable.php",
      data: data
    })
    .done(function(tr) {
      $("#tableBody").empty();
      $("#tableBody").append(tr);
    })
    .fail(function(error){
      console.log(error);
    });
};

知道我错过了什么吗?

【问题讨论】:

  • 用户变量持有什么?
  • 您没有发送任何 JSON,因此无需使用 json_decode()

标签: javascript php jquery sql ajax


【解决方案1】:

在发送之前尝试将用户编码为字符串。

function searchGuests(users){
  var data = {
    "searchField": JSON.stringify(users);
  };
  console.log(data);
  $.ajax({
      type: "POST",
      dataType: "text",
      url: "controllers/manageTable.php",
      data: data
    })
    .done(function(tr) {
      $("#tableBody").empty();
      $("#tableBody").append(tr);
    })
    .fail(function(error){
      console.log(error);
    });
};

【讨论】:

  • 没有JSON.encode() 这样的方法,这个想法也没有意义。 jQuery默认使用$.param()序列化对象
  • 我确实解决了它不需要 json_decode -ed
  • 将其与 php json_encode 混淆。它是 JSON.stringify
  • 请分享您的答案。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
相关资源
最近更新 更多