Я новичок в AJAX и недавно изучал функции методов jQuery get() и post(). В то время как метод get() работал гладко, я запнулся, когда наткнулся на метод post(), который выдает ошибку: «405 (метод не разрешен)» каждый раз, когда я пытаюсь его вызвать.
Используя Bootstrap, у меня есть простой файл HTML с именем get_post.html, в каждом из которых есть элементы div, абзац и кнопка. Используя jQuery, в событии нажатия кнопки я отправляю имя и местоположение с помощью метода post() в файл php с именем mypost.php, который будет обрабатывать данные и отправлять строку сообщения обратно в get_post.html. Я хочу показать окончательное сообщение в элементе абзаца get_post.html. Пытаясь добиться этого, каждый раз, когда я нажимаю кнопку, консоль браузера показывает сообщение об ошибке, упомянутое выше. Предполагая, что проблема каким-то образом связана с политикой CORS, я должен упомянуть, что файлы get_post.html и mypost.php находятся в одной папке в одном домене. Так почему же это ошибка, связанная с политикой CORS? Более того, я использую локальный хост http-сервера Node.js для запуска файла get_post.html. Следовательно, любая проблема, связанная с локальным хостом, также маловероятна. Кроме того, я включал и отключал CORS во время работы http-сервера, но безрезультатно. Я также пытался использовать IIS, но и там возникает та же проблема.
Итак, что может быть причиной ошибки и как я могу избавиться от нее? Поскольку я новичок в AJAX, я не очень привык к его тонкостям. Большинство онлайн-решений не имеют отношения к моему сценарию; поэтому я не мог получить от них большой помощи. Пожалуйста, помогите разобраться с этим, если возможно, с примером базового уровня.
код get_post.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.js"></script>
<!-- Popper JS -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
<title>Document</title>
</head>
<body>
<div class="container">
<p id="loadedData">This is where data will be loaded from server dynamically.</p>
<button class="btnLoad btn btn-primary">Load Data</button>
</div>
<script type="text/javascript">
$(document).ready(function() {
$(".btnLoad").click(function() {
// Fetching data using post() method.
$.post("mypost.php", {
name: "Firstname Lastname",
location: "Countryname"
}, function(data, status) {
$("#loadedData").html(data);
alert(status);
});
});
});
</script>
</body>
</html>
код mypost.php:
<?php
$name = $_POST["name"];
$location = $_POST["location"];
echo "This is ".$name.". I'm from ".$location".";
?>
С уважением!