Справочная информация:
Следующий код 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 Dev Tools * Заголовки 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:
Примечание: неопределенный индекс: request_type в ..... server.php
А в Chrome Dev Tools * Заголовки 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:
Примечание: неопределенный индекс: request_type в ..... server.php
А в Chrome Dev Tools * Заголовки server.php
отображаются так:
Из-за общего разочарования (хотя это бессмысленно, потому что я все еще буду использовать JQuery), я подумал, что буду использовать $.param()
JQuery, и это наверняка сработает.
Итак, я попробовал это:
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
Примечание: неопределенный индекс: request_type в ..... server.php
А в Chrome Dev Tools * Заголовки server.php
отображаются так:
Мой вопрос: как мне изменить приведенный выше код Fetch
, чтобы он стал заменой для кода AJAX
вверху.
Я понимаю, что использование горизонтальных линий может быть утомительным для некоторых. Вы можете позволить себе верить, что это действительно помогает многим из нас, обычных людей, следить за тем, что происходит в вопросе.