【问题标题】:405 method not found. On localhost找不到 405 方法。在本地主机上
【发布时间】:2018-08-02 10:39:13
【问题描述】:

所以我正在制作一个将信息放入本地 mysql 数据库的表单。但是当我尝试发布它时我卡住了。尝试调试时出现“405 方法未找到”。我正在为我的虚拟数据库唱 xampp,也许是因为这个? 代码:

HTML:

<!DOCTYPE html>
<html>
<head>
  <title>Kasmetinių atostogų prašymas</title>
  <link rel="stylesheet" type="text/css" href="style.css" />
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
    <div class="title">
      <h1>Kasmetinių atostogų prašymas</h1>
    </div>
    <div class="form">
  <form id="requestForm" method="POST"  target="_blank">

    <input type="date" name="request_date" id="input_field" placeholder="Prašymo data"  required></br></br>

    <input type="text" name="first_name" placeholder="Vardas" id="input_field" required></br></br>

    <input type="text" name="last_name" placeholder="Pavardė" id="input_field" ></br></br>

    <input type="number" name="personal_code" placeholder="Asmens kodas" id="input_field" min="11" max="11" ></br></br>

    <input type="text" name="p_address" placeholder="Jūsų adresas" id="input_field" ></br></br>

    <input type="date" name="requestDateFrom" id="input_field" placeholder="Atostogos nuo"  ></br></br>

    <input type="date" name="requestDateTo" id="input_field" placeholder="Atostogos iki"  ></br></br>

    <input type="number" name="daysNumber" placeholder="Atostogų dienų skaičius" id="input_field" ></br></br>
  </br>
  <Input type="button" name="submit_button" id="buttonLast" value="Patvirtinti">
  </form>
</div>  
<script>
  $(document).ready(function(){
    $("#buttonLast").click(function(){
      $.ajax({
        url:"http://127.0.0.1:5500/insert.php",
        type: "POST", 
        data:$("#requestForm").serialize(),
        success:function(response)
        {
          alert("Well done!");
        }
      });
    });
  });
</script>
</body>
</html>

这是连接数据库并将信息发布到特定列的 php 代码。 出于测试的目的,我尝试仅从 3 个 cols 发布。 PHP:

<?php



$con = mysqli_connect("localhost","root","","test");

if(!$con)
{
  echo 'Connection problems';
}
else
{
  echo 'Ok';
}


if(isset($_POST['submit'])){
$date = $_POST['requestDate'];
$name=$_POST['firstName'];
$lname = $_POST['lastName'];


$query = "insert into info (date,name,lname) values ('$date','$name','$lname')";


if($con->query($query) === true )
{
  echo 'Duomenys išsaugoti!';
}
else{
  echo 'Duomenų nepavyko išsaugoti!';
}
}
header("refresh:2; url=index.html");
?>

【问题讨论】:

  • 正确的 jquery Ajax 调用应该是 method: "POST", 而不是 type: "POST",
  • 405 Method Not Allowed(从wiki复制)请求的资源不支持请求方法;例如,表单上的 GET 请求需要通过 POST 呈现数据,或只读资源上的 PUT 请求。

标签: javascript php jquery html mysql


【解决方案1】:

改变

type: "POST"

method:"POST"

您可能遇到的其他错误:

您在 php 中使用 requestDate 而在 html 中使用 request_date。其他参数类似。

更新: 将 cors 标头添加到 Ajax 调用

url:"http://127.0.0.1:5500/insert.php",
method: "POST", 
headers: {
   'Access-Control-Allow-Origin': '*'
},
data:$("#requestForm").serialize(),
success:function(response)
{
  alert("Well done!");
}

【讨论】:

  • 谢谢。第一部分没有帮助,仍然出现错误。第二部分已修复。
  • 你改变了 xampp 端口监听 5500?
  • 确实做到了。不工作但又出现一个错误:“请求的资源上不存在'Access-Control-Allow-Origin'标头。因此不允许访问源'null'。响应的HTTP状态代码为404。”似乎同样的错误。
  • 在 ajax 调用头中添​​加这个:{Access-Control-Allow-Headers: *} 并重试获取
  • 你能告诉我我应该如何添加它吗?请举例:)
【解决方案2】:
$(document).on("submit", "#requestForm", function (event) {$.ajax({
    url:"https://127.0.0.1:5500/insert.php",
    type: "POST", 
    data:$(this).serialize(),
    success:function(response)
    {
      alert("Well done!");
    }
  });
});

试试这个 Jquery 代码。

【讨论】:

猜你喜欢
  • 2015-08-21
  • 1970-01-01
  • 2019-01-06
  • 2012-07-26
  • 2021-08-20
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多