У меня есть проект, в котором я должен отправить данные экзамена с именем экзамена и выбранным количеством вопросов из списка:
- Я должен отправить JSON через AJAX в мой файл make_exam.php
- questions.php файл отправляет данные в backend.php через CURL
выше - это архитектура проекта, которой я должен следовать
для тестирования, backend.php просто отправляет JSON, который он получает.Но похоже, что он ничего не получает.
var exam_json = {"action": "exam_created", "exam_name": "test-1", "questions [2,5,9]}
var str_json = "exam="+(JSON.stringify(exam_json));
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
}
};
xhttp.open("POST", "functions.php", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send(str_json);
CURL из make_test.php:
<?php
$json = $_POST["exam"];
$exam_json = json_encode($json);
//if I echo $exam_json, it will display correctly meaning I am getting data here
$ch = curl_init();
$curlConfig = array(
CURLOPT_URL =>"backend.php",
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_POSTFIELDS => $exam_json,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Content-Length: ' . strlen($exam_json)),
);
curl_setopt_array($ch, $curlConfig);
$result_back = curl_exec($ch);
echo $result_back;
?>
backend.php получает данные, отправленные из make_exam.php через CURL:
<?php
$data_test = json_decode(file_get_contents('php://input'), true);
echo $data_test;
//the echo is always empty
?>