我正在尝试通过jQuery将POST和PUT请求发送到PHP应用程序。 index.php是我的控制器,它检查$ _SERVER [“ REQUESTED_METHOD”]并用作调度程序。例如:如果发送了GET请求,则我的index.php会发回主页的渲染视图。
现在,我想实现更多的请求方法,例如PUT和POST。但是它们都无法正常工作。我的index.php始终表现得像是发送了GET。
当我通过POSTMAN发送请求时,index.php响应正确。通过纯HTML(method =“ post” action =“ index.php”)的POST请求也可以正常工作。
在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
});
};