不要在PHP Web服务中获取json数据

时间:2019-01-28 17:51:26

标签: php

我正在编写我的第一个Javascript / PHP Web应用程序。 在客户端,我使用以下代码:

<script>
$.ajax({
  url: "Search.php",
  type: "POST",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  data: '{SubGroup:"'+SubGroup+'",FlowerColor:"'+FlowerColor+'"}',
  cache: false,
  success: function (data) {
      console.log("Back from AJAX - Success.");
      // $(document).ajaxSuccess implements the success logic
  },
  error: function (data) {
    console.log("Back from AJAX - Error.");
  }
});

Web Service Search.php完美运行,有一个主要问题。从ajax语句发送的数据(SubGroup和FlowerColor)没有被接收。我正在使用下面的代码。

<?php 
if (isset($_POST["SubGroup"])) {
    $SubGroup = $_POST['SubGroup'];
} else {
   error_log("Invalid input Received (SubGroup)");
   exit;
}

奇怪的是,我使用以下代码完美地接收了其余的标头信息:

 // Getting headers sent by the client.
 $headers = apache_request_headers();
 foreach($headers as $key => $value)
 {
      error_log($key . ' = ' . $value);;
 }

1 个答案:

答案 0 :(得分:0)

如果您将数据作为字符串传递,则应使用URL编码,而不是JSON的字符串表示形式:SubGroup=...&FlowerColor=...

您还可以将数据作为对象传递:

data: {SubGroup: 'mygroup', FlowerColor: 'mycolor'}

JQuery Doc

  

processData(默认:true)

     

类型:布尔

     

默认情况下,数据传入   数据选项作为对象(从技术上讲,除   字符串)将被处理并转换为适合的查询字符串   设置为默认的内容类型“ application / x-www-form-urlencoded” 。如果   您要发送DOMDocument或其他未处理的数据,请设置此   选项为false。