无法POST,405方法不允许

时间:2017-02-05 14:24:28

标签: javascript php

我写了一个简单的代码: 登录页面,我正在尝试将用户名发送到php页面。

当我点击登录页面上的提交时,我收到了405方法不允许。

如果我正在使用get方法 - 它正在运行,但我想要发帖,因为我想发送用户并传递给不在地址中的服务器。

HTML文件:

projects/userid/projectid

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script
  src="https://code.jquery.com/jquery-3.1.1.min.js"
  integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
  crossorigin="anonymous"></script>
    <script src="mainjs.js"></script>
</head>
<body>

<form>
  First name:<br>
  <input id="fname" type="text" name="firstname" value="Mickey">
  <br>
  Last name:<br>
  <input id="lname" type="text" name="lastname" value="Mouse">
  <br><br>
  <input type="submit" value="Submit" onclick="testfunc();">
</form> 

<div id='result'></div>
<p>If you click the "Submit" button, the form-data will be sent to a page called "action_page.php".</p>

</body>

PHP文件:

JavaScript:

function testfunc(){
    alert("MainJS");
    var fname = $('#fname').val();
    var lname = $('#lname').val();

    $.post('getdata.php', {fname:fname, lname:lname}, function(data){
        alert(data);
        $('#result').html(data);
    });
}

谢谢!

1 个答案:

答案 0 :(得分:0)

我无法使用405 Method Not Allowed消息复制您的问题,但我觉得它与您在PHP文件中发送的那些标头有关。我不确定你为什么要发送这些内容,因为我没有看到你想要实现的目的。

如果你真的需要从PHP文件发送这些标题,这个答案可能没有帮助。我尝试了以下步骤,并且能够得到我认为是您所需的功能。

首先,让我们将脚本移到关闭正文标记之前:

<script
  src="https://code.jquery.com/jquery-3.1.1.min.js"
  integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
  crossorigin="anonymous"></script>
<script src="mainjs.js"></script>
</body>

然后,让我们删除onclick并为该提交按钮提供一个我们可以从JavaScript中获取的ID:

<input type="submit" value="Submit" id="submit">

接下来,在mainjs.js文件中,您应该选择该提交按钮,然后使用旧testfunc()的内容向其添加一个事件监听器:

var submit = document.getElementById('submit');

submit.addEventListener('click', function(event) {
  event.preventDefault();
  alert("MainJS");
  var fname = $('#fname').val();
  var lname = $('#lname').val();

  $.post('getdata.php', {fname:fname, lname:lname}, function(data){
      alert(data);
      $('#result').html(data);

  });
});

请注意&#39;事件&#39;作为参数传递给addEventListener中的匿名事件处理函数。您必须在此事件上调用preventDefault(),以便表单不会提交,从而重新加载整个页面。

我不确定你在PHP文件中做了什么,但这是我的getdata.php:

<?php

if ($_REQUEST['fname'] == 'Mickey' && $_REQUEST['lname'] == 'Mouse') {
  $username = 'Disney';
  echo $username;
}

您当然应该将其更改为您设计的任何用户名查找方案。当我点击提交时,我会看到迪士尼&#39;出现在#result div的HTML页面上,我认为这是您想要的功能。