带有ajax jQuery的405(不允许方法)(POST)方法
Posted
技术标签:
【中文标题】带有ajax jQuery的405(不允许方法)(POST)方法【英文标题】:405 (Method Not Allowed) (POST) method with ajax jQuery 【发布时间】:2019-03-25 13:58:39 【问题描述】:我试图通过 ajax jQuery 将一些数据发送到带有 POST 的 php 文件,但我不断收到 POST 405 Method Not Allowed 错误,任何解决此问题的想法都将不胜感激,这是进行调用的函数
function manageData(key)
var name = $("#countryName");
var abbrev = $("#countryAbbrev");
var desc = $("#countryDesc");
if (isNotEmpty(name) && isNotEmpty(abbrev) && isNotEmpty(desc))
$.ajax(
url: 'http://127.0.0.1:5500/ajax.php',
method: 'POST',
dataType: 'text',
data:
key: key,
name: name.val(),
abbrev: abbrev.val(),
desc: desc.val()
,
success: function (response)
alert(response);
);
这里是 ajax.php 文件代码
<?php
if (isset($_POST['key']))
$conn = new mysqli(host:'localhost', username:'root', passwd:'root',
dbname:'mysqldatamanager');
$name = $conn->real_escape_string($_POST['name']);
$abbrev = $conn->real_escape_string($_POST['abbrev']);
$desc = $conn->real_escape_string($_POST['desc']);
if($_POST['key'] == 'addNew')
$sql = $conn->query(query:"SELECT id FROM country WHERE
countryName = '$name'");
if ($sql->num_rows > 0)
exit("Country already exists!");
else
$conn->query("INSERT INTO country (countryName,
countryAbbrev, countryDesc) VALUES ('$name', '$abbrev',
'$desc')");
exit("Country has been added succesfully!");
?>
【问题讨论】:
如果你在本地工作?请评论您的项目文件夹位置。 PHP 不会返回 405 错误。您可能需要查看您的服务器配置以允许 POST 请求。 (另外:确保获取 405 的是 POST 请求,而不是预检 OPTIONS 请求)。 @Quentin:我如何知道 POST 是收到 405 错误还是预检 OPTIONS 请求?如果是后者,我需要做什么才能摆脱错误?我是 jQuery AJAX 的新手,面临同样的问题。请帮忙。 浏览器开发者工具的网络标签会显示动词和响应代码。 【参考方案1】:请尝试以下代码。
function manageData(key)
var name = $("#countryName");
var abbrev = $("#countryAbbrev");
var desc = $("#countryDesc");
if (isNotEmpty(name) && isNotEmpty(abbrev) && isNotEmpty(desc))
$.ajax(
url: 'http://localhost/ajax.php',
type: "POST",
data:
key: key,
name: name.val(),
abbrev: abbrev.val(),
desc: desc.val()
,
success: function (response)
alert(response);
);
【讨论】:
如果他们没有发布key
的值(并且问题中的源代码显示它们是),那么结果将跳过问题中的 PHP 块, 不返回 405 错误。以上是关于带有ajax jQuery的405(不允许方法)(POST)方法的主要内容,如果未能解决你的问题,请参考以下文章
405 方法不允许,PATCH 不工作。 Laravel、Ajax、Jquery、引导模式
jQuery .ajax() POST 请求抛出 405(不允许的方法)但 GET 不会
WCF REST 服务返回 405:jQuery AJAX GET 不允许的方法