Php 用javascript发送帖子

Php 用javascript发送帖子,php,javascript,Php,Javascript,此代码有什么问题?试图通过POST w/javascript将数据发送到PHP页面,但没有发送任何内容,标题中没有任何内容$\u POST不包含任何内容。 HTML: PHP现在没有做任何特别的事情,只是看看我是否可以将帖子信息传递给它: <?php echo "test"; $username=$_POST['username']; echo $username; ?> 它将“test”行回显到正确的位置,因此它与PHP页面进行通信。另外,我知道我仍然有“text”类型的pw

此代码有什么问题?试图通过POST w/javascript将数据发送到PHP页面,但没有发送任何内容,标题中没有任何内容$\u POST不包含任何内容。

HTML:

PHP现在没有做任何特别的事情,只是看看我是否可以将帖子信息传递给它:

<?php
echo "test";
$username=$_POST['username'];
echo $username;
?>

它将“test”行回显到正确的位置,因此它与PHP页面进行通信。另外,我知道我仍然有“text”类型的pwd输入,我知道在将密码发送到服务器之前散列密码可能是个好主意


谢谢大家的帮助

您没有在
XMLHttpRequest
中发送参数。比如:

var params = "username=user&password=something";
xmlhttp.open("POST", "PHP/login.php", true);

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");

xmlhttp.onreadystatechange = function() {
    if(http.readyState == 4 && http.status == 200) {
        document.getElementById("rssnav2").innerHTML = xmlhttp.responseText;
    }
}
xmlhttp.send(params);
试着改变

xmlhttp.send();


当然,您需要输入验证逻辑。

这个
xmlhttp
实际上并不了解
,因此它不会自动发送任何数据

相反,您必须自己收集
的数据,将其格式化为URL编码,然后
.send()
将其与请求一起发送

function loginSub(){
    var user = document.getElementById('username');
    var pass = document.getElementById('pwd');

    var postData = [
        encodeURIComponent(user.name) + '=' + encodeURIComponent(user.value),
        encodeURIComponent(pass.name) + '=' + encodeURIComponent(pass.value)
    ].join('&');

    // ...

    xmlhttp.send(postData);
}
有关更多详细信息,您可能需要通读MDN,尤其是上的部分

它包括一个用于在中收集
数据的通用解决方案,可用于:

<form method="POST" action="PHP/login.php" onsubmit="AJAXSubmit(this); return false;">
此外,除了单击
type=“submit”
,还有更多的方法提交
。例如,大多数浏览器只需在键入
type=“text”
type=“password”
时点击Enter键即可进行提交。而且,这样做通常不会模仿
type=“submit”
单击

这样,您至少要考虑将调用从“代码> OnCabuty< /Cord>”中移入“<代码> OnSputs<代码>:

<form method="POST" id="userSub" class="userSub" onsubmit="loginSub(); return false;">

}


这将解决您的问题

getElementById(“rssnav2”)??我没有看到任何带有这样id的html。对不起,Rahul,这是我HTMLaw另一部分的一个div。我的回答很好,很好!感谢您提供这些资源!请小心将
内容长度
设置为
字符串
长度
。JavaScript
String
s是UTF-16编码的,但将以UTF-8编码发送。如果字符串完全由ASCII字符组成,则长度将匹配。但是,除此之外,还需要获取头的UTF-8字节长度。
function loginSub(){
    var user = document.getElementById('username');
    var pass = document.getElementById('pwd');

    var postData = [
        encodeURIComponent(user.name) + '=' + encodeURIComponent(user.value),
        encodeURIComponent(pass.name) + '=' + encodeURIComponent(pass.value)
    ].join('&');

    // ...

    xmlhttp.send(postData);
}
<form method="POST" action="PHP/login.php" onsubmit="AJAXSubmit(this); return false;">
<form method="POST" id="userSub" class="userSub" onsubmit="return false">
<form method="POST" id="userSub" class="userSub" onsubmit="loginSub(); return false;">
function loginSub()
{
var xmlhttp = false;
if(window.XMLHttpRequest)
{
    if(typeof XMLHttpRequest != 'undefined')
    {
        try
        {
            return xmlhttp= new XMLHttpRequest();
        }

        catch(e)
        {
            return xmlhttp= false;
        }
    }

    else if( window.ActiveXObject)
    {
        try
        {
            return xmlhttp= new ActiveXObject('Msxml2.XMLHTTP');
        }
        catch(e)
        {
            try
            {
                return xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
            }
            catch(e)
            {
                return xmlhttp = false;
            }
        }
    }
}
var xmlhttp=false;
xmlhttp=createobject();
if(xmlhttp)
{   
    xmlhttp.onreadystatechange = function()
    {
        if(xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById('rssnav2').innerHTML = xmlhttp.responseText;
        }
    }
    parameter=username+'='+document.getElementById('usernname').value;
    xmlhttp.open('POST','PHP/login.php',true);
    xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    xmlhttp.send(parameter);
}