无法访问PHP中发布的数据

时间:2019-01-01 12:33:31

标签: javascript php fetch

我正在使用reactjsPHP,并尝试使用POSTfetch API一些数据。数据已成功发布,但是数据格式在服务器端很奇怪,我无法使用它。

这是我的代码的一部分:

JavaScript

var url = "http://cyg.com/router.php";

var data = {
  service: 'Grade',
  programme: this.state.programme,
  enrolment: this.state.enrolment
};

fetch(url, {
  method: 'POST',
  body: JSON.stringify(data),
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept': 'application/json'
  }
})
.then(
  res => res.json()
)
.then(
  (result) => {
    console.log(result);
    //code to handle result here...
  },
  (error) => {
    console.log(error);
    //code to handle error here...
  }
);

PHP

<?php
  print_r($_POST); // here just to verify posted data. Remove later.
  $service = $_POST['service'];
  $programme = $_POST['programme'];
  $enrolment = $_POST['enrolment'];
  //some to code to process request....
?>

在发布数据时,会出现错误,指出未定义的索引serviceprogrammeenrolment

在浏览器XHR POST中检查console请求时,我遵循了请求的参数和响应。

参数 Format of data posted

回复 Format of data returned

您可以在 Response (第二张图片)中看到$_POST的值,格式为:

Array
(
    [{"service":"Grade","programme":"BCA","enrolment":"147996460"}] => 
)

我无法找出问题的原因。但是,如果我以以下方式更改Javascript,一切正常。

修改后的JavaScript

var url = "http://cyg.com/router.php";

/*var data = {
  service: 'Grade',
  programme: this.state.programme,
  enrolment: this.state.enrolment
};*/

var data = "service=Grade&programme="+this.state.programme+"&enrolment="+this.state.enrolment;

fetch(url, {
  method: 'POST',
  body: data,
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept': 'application/json'
  }
})
.then(
  res => res.json()
)
.then(
  (result) => {
    console.log(result);
    //code to handle result here...
  },
  (error) => {
    console.log(error);
    //code to handle error here...
  }
);

在更改JavaScript时,我也观察到请求参数格式的变化,如下所示:- Format of data posted

谢谢!

0 个答案:

没有答案