私の AJAX スクリプトは以前は機能していませんでしたが (データを送信しませんでした)、要求ヘッダーを設定すると問題が解決しました。それが機能するのは素晴らしいことですが、機能するためになぜそれらが必要なのかを理解したいと思います. ありがとう :-)
//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
JavaScript
function request(elm, type, url, str, fn) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function()
{
if (xhr.readyState==4 && xhr.status==200)
{
if (!fn) elm.innerHTML=xhr.responseText;
else fn(xhr);
}
}
xhr.open(type, url, true);
//yay it works with this :-)
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(str);
}
var form = document.getElementById("form_login")
var btnLogin = form.getElementsByClassName("btn")[0];
addEvent(btnLogin, "click", function(e)
{
preventDefault(e);
var post ="",input,inputs = form.getElementsByClassName("input");
for (var i=0, l=inputs.length; i<l; i++)
{
input = inputs[i].getElementsByTagName("input")[0];
post += input.name + "=" + encodeURI(input.value) + "&";
}
post = post.substr(0,post.length-1);
var help = form.getElementsByClassName("help")[0];
request(help, "POST", "user/login-exe.php?dt='" + new Date() + "'", post);
});
そのすべてが有効な場合、ユーザーはそのビットにログインしますが、表示されません。