Я пытаюсь отправить запросы POST и PUT через jQuery в приложение PHP. Index.php - это мой контроллер, который проверяет $ _SERVER ["REQUESTED_METHOD"] и работает как диспетчер. Например: если отправлен запрос GET, мой index.php отправляет обратно обработанный вид главной страницы.
Теперь я хочу реализовать еще несколько методов запроса, таких как PUT и POST. Но ни один из них не работает должным образом. Мой index.php всегда ведет себя как GET был отправлен.
Когда я отправляю запрос через POSTMAN, ответ index.php правильный. Также корректно работает запрос POST через простой HTML (method = "post" action = "index.php").
В Chrome DevTools при отправке запроса через jQuery отображались правильные заголовки запроса. Но в $ _SERVER [] указан метод запроса «GET».
index.php
<?php
// CONSTANTS
define('ROOT', str_replace("public", "", $_SERVER['DOCUMENT_ROOT']));
// INCLUDES
require_once(ROOT . "core/Authenticator.php");
require_once(ROOT . "model/User.php");
require_once(ROOT . "model/ShoppingList.php");
require_once(ROOT . "views/Lists.php");
if(Authenticator::checkAuthentication()) {
$method = $_SERVER['REQUEST_METHOD'];
Utility::debug($method);
switch ($method) {
case 'GET':
Lists::render();
break;
case 'POST':
Print("POST");
break;
case 'PUT':
Print("PUT");
break;
case 'DELETE':
print("DELETE");
break;
default:
print("DEFAULT");
break;
}
} else {
header("Location: login.php");
die();
}
script.js
/* global $*/
$(document).ready(function () {
$('input[type="checkbox"]').click(processArticle);
});
function processArticle() {
let data = {};
data.article = "article";
data.id = $(this).attr('id');
$.ajax({
method: "PUT",
url: "index.php",
data: data
});
};