我写了一个简单的代码: 登录页面,我正在尝试将用户名发送到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);
});
}
谢谢!
答案 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页面上,我认为这是您想要的功能。