我正在使用reactjs
和PHP
,并尝试使用POST
来fetch 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....
?>
在发布数据时,会出现错误,指出未定义的索引service
,programme
和enrolment
。
在浏览器XHR POST
中检查console
请求时,我遵循了请求的参数和响应。
您可以在 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时,我也观察到请求参数格式的变化,如下所示:-
谢谢!