Илья777
Новичок
Здравствуйте. Есть необходимость создать обёртку для AJAX, дабы отсылать на файлы-обработчики данные через AJAX без расписывания каждый раз, а просто вызвав функцию. Чтобы не было важно, что на входе $data (просто значение или массив, и не важно, сколько в массиве элементов)
Исходник взял отсюда.
Не работает.
PHP 5.6
Я поместил класс в файл, который повсеместно подключен в проекте, допустим functions.php и добавил туда функцию вызова:
Обработчик process.php :
Вызываю всё это дело из другого файла (functions.php подключен по умолчанию):
Переменные $_POST пустые...
Пожалуйста помогите.
Исходник взял отсюда.
Не работает.
PHP 5.6
Я поместил класс в файл, который повсеместно подключен в проекте, допустим functions.php и добавил туда функцию вызова:
PHP:
<?php
class Async
{
public function __construct() {}
public function request($uri = '', $data = [])
{
$formDataScript = '';
if (!empty($data)) {
$method = 'POST';
$formDataScript = <<<HEREDOC
var formData = new FormData(); \r\n
HEREDOC;
foreach ($data as $key => $value) {
$formDataScript .= <<<HEREDOC
formData.append("$key", "$value"); \r\n
HEREDOC;
}
} else {
$method = 'GET';
$formDataScript = <<<HEREDOC
var formData = null;
HEREDOC;
}
$asyncRequestHtml = <<<HEREDOC
<script>
function responseListener() {
console.log(this.responseText);
}
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", responseListener);
oReq.open("$method", "$uri", true);
$formDataScript
oReq.send(formData);
</script>\r\n\r\n
HEREDOC;
echo $asyncRequestHtml;
//var_dump($_POST);
//var_dump($_GET);
}
}
function аякс($uri, $data)
{
$req = (new Async())->request($uri, $data);
echo $req;
}
?>
Код:
<?php
if(session_id() == '') {
session_start();
}
//- Конфигурационный файл
include_once("../connect.php");
include_once("../functions.php");
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest')
{
if(isset($_POST['firstname'])) {
echo($_POST['firstname']);
}
if(isset($_POST['firstname'])) {
echo($_POST['lastname']);
}
}
Вызываю всё это дело из другого файла (functions.php подключен по умолчанию):
PHP:
$uri = "ajax/process.php";
$data = ['firstname' => 'joHn', 'lastname' => 'bLaCk'];
аякс($uri,$data);
Переменные $_POST пустые...
Пожалуйста помогите.