AJAX无法找到PHP文件。它返回“POST 405(Method Not Allowed)”

时间:2016-11-08 18:06:00

标签: javascript php html ajax

我是PHP的新手,并尝试学习如何设置一个选项,人们可以通过单击提交按钮发送电子邮件。但我已多次检查所有代码,但无法弄清楚我做错了什么。

控制台说:

  

ajax.js:24 POST http://localhost:8081/send_email.php 405(方法不允许)

语法访问被拒绝:ajax.open(“POST”,“send_email.php”);;`

文件夹结构:

NSWorkspaceWillSleep

我怎么能让这个小小的东西运转起来。你需要一些帮助才能让这个东西运行,你知道我几乎就在那里。

NSWorkspaceDidWake

服务器端代码:

send_email.php
index.html
JS
-ajax.js //
function _(id) {
    return document.getElementById(id);
}

function submitForm() {
    _("button").disbaled = true;
    _("status").innerHTML = "Please wait...";
    var formdata = new FormData();
    formdata.append( "email", _("email").value );
    formdata.append( "subject", _("subject").value );
    formdata.append( "message", _("message").value );
    var ajax = new XMLHttpRequest();
    ajax.open("POST", "send_email.php"); // parameter: method, url, boolean (optional)
    ajax.onreadystatechange = function() {
        if(ajax.readyState == 4 && ajax.status == 200) {
            if(ajax.responseText == "success") {
                _("contact-form").innerHTML = "<h2>Thanks, your email is sent successfully</h2>!";
            } else {
                _("status").innerHTML = ajax.responseText;
                _("mybtn").disabled = false;
            }
        }
    }
    ajax.send( formdata );
}

2 个答案:

答案 0 :(得分:0)

您目前正在尝试同时调试多个组件 - 这绝不是成功的秘诀。错误消息似乎从服务器返回为HTTP状态(您是否检查了要验证的日志?)并且它似乎没有在您的PHP代码中触发。我建议你应该尝试的第一件事是:

<pre>
<?php
print_r($_POST);
?>
</pre>
<form method='POST'>
<input type='text' name='sometext' value='hello world'>
<input type='submit' name='submit' value='submit'>
</form>

看看你是否得到了同样的错误。我怀疑情况就是这样,暗示你的服务器配置,网络应用程序防火墙配置或你自己没有告诉我们的PHP自动预挂(或其他PHP代码)存在问题。

答案 1 :(得分:0)

如果您正在运行两台服务器,它们可能没有在同一端口上运行......您必须更改AJAX网址以放置正确的端口。

现在你要求localhost:8081/send_email.php,这是通过你的节点服务器无法提供的(当然,PHP代码甚至不会被评估)。

更改为URL并在Apache服务器上包含页面的完整URL,并使用正确的端口。