【发布时间】:2019-02-07 19:51:30
【问题描述】:
背景:
以下AJAX 代码成功运行 (ReactJS + JQuery frontend, PHP backend)。
const data = {request_type:"load_data", start:1, end:50};
$.ajax({
type: "POST",
url: "http://localhost/site/server.php",
data: data,
dataType: "json",
success: (JSobject) => {
this.setState({arr: JSobject.arr});
}
});
在 Chrome 开发工具中,server.php 的标头显示为“Form Data”,如下所示:
在 PHP 服务器后端,有这行代码:
$request_type = $_POST["request_type"];
为了学习如何进行 Fetch(到目前为止,我一直避免使用它,主要是因为我的 AJAX 样板运行良好),我一直在尝试构建上述代码的替代品.
我试过了:
const data = {request_type:"load_data", start:1, end:50};
fetch("http://localhost/site/server.php", {
method: "POST",
body: data
})
.then((JSobject) => {
this.setState({arr: JSobject.arr});
});
但我得到这个 PHP 错误:
注意:未定义索引:.....server.php 中的 request_type
在 Chrome 开发工具中server.php 的标题显示如下:
所以,我尝试将数据更改为 JSON.stringify(data),如下所示:
const data = {request_type:"load_data", start:1, end:50};
fetch("http://localhost/site/server.php", {
method: "POST",
body: JSON.stringify(data)
})
.then((JSobject) => {
this.setState({arr: JSobject.arr});
});
但我仍然得到完全相同的 PHP 错误:
注意:未定义索引:.....server.php 中的 request_type
在 Chrome 开发工具中server.php 的标题显示如下:
出于普遍的挫败感(尽管这毫无意义,因为我仍在使用 JQuery),我想我会使用 JQuery 的$.param(),这肯定会奏效。
所以我尝试了这个:
const data = $.param({request_type:"load_data", start:1, end:50});
fetch("http://localhost/site/server.php", {
method: "POST",
body: data
})
.then((JSobject) => {
this.setState({arr: JSobject.arr});
});
仍然遇到同样的 PHP 错误
注意:未定义索引:.....server.php 中的 request_type
在 Chrome 开发工具中server.php 的标题显示如下:
我的问题:如何修改上面的 Fetch 代码,使其成为顶部 AJAX 代码的直接替代品。
我意识到使用水平线对某些人来说可能很麻烦。您可以允许自己相信它确实可以帮助我们很多普通人关注问题中发生的事情。
【问题讨论】:
标签: ajax reactjs post http-post fetch-api