PHP не распознает PUT / POST-запрос, отправленный через AJAX - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь отправить запросы 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
    });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...