我是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 );
}
答案 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,并使用正确的端口。