AJAX找不到php文件.它返回"POST 405(方法不允许)"


AJAX Could not find PHP-file. It returns "POST 405 (Method Not Allowed)"

我是PHP新手,试图学习如何设置一个选项,人们可以通过点击提交按钮发送电子邮件。但是我把所有的代码都检查了几遍,还是不知道我做错了什么。

控制台显示:

ajax.js:24 POST http://localhost:8081/send_email.php 405 (Method Not Allowed)

访问被拒绝,语法:ajax。打开("文章"、"send_email.php");,"

文件夹结构:

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 );
}
服务器端代码:
<?php
    if ( isset($_POST["email"]) && isset($_POST["subject"]) && isset($_POST["message"]) ) {
        $email = $_POST["email"];
        $subject = $_POST["subject"];
        $message = nl2br($_POST["message"]);
        $to = "you@hotmail.com";
        $from = $email;
        $subject = "Contact From Message";
        $message = "<b>Email Address:</b> ".$email. " <br><b>Subject: </b>  ".$subject." <br><p> ".$message." </p>";
        $headers = "From: $from'n";
        $headers = "MIME-version: 1.0'n";
        $headers = "Content-type: text/html; charset=iso-8859-1'n";
        if ( mail($to, $subject, $message, $headers)) {
            echo "success";
        } else {
            echo "The server failed to send the message. Please try again later.";
        }
    }
?>
<body>
  <form id="contact-form" onsubmit="submitForm(); return false;">
    <label>
      <span class="contact">Your Email</span>
      <input id="email" class="contact_input" type="text" name="email" placeholder="name@hotmail.com">
    </label> 
    <label>
      <span class="contact">Subject</span>
      <input id="subject" class="contact_input contactinfo" type="text" name="message">
    </label>
    <label>
      <span class="contact">Message</span>
      <textarea id="message" class="contact_input contactinfo" type="text"></textarea>
    </label>
    <label>
      <input id="button" type="submit" value="SEND">
      <span id="status"></span>
    </label>
  </form>
</body>

如果您正在运行两台服务器,它们可能不在同一个端口上运行…您必须更改AJAX url以放置正确的端口。

现在您正在调用localhost:8081/send_email.php,它无法通过您的Node服务器获得(并且PHP代码当然甚至不会被评估)。

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

您目前正在尝试同时调试多个组件-这绝不是成功的秘诀。错误消息似乎是作为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>

,看看是否会得到相同的错误。我怀疑这将是情况,这意味着这是一个问题与您的服务器配置,web应用程序防火墙配置或PHP自动前置(或其他PHP代码),你没有告诉我们。

相关文章: