无法从javascript到php获取参数
无法获取从javascript传递到loginme.php的参数无法从javascript到php获取参数,javascript,php,ajax,Javascript,Php,Ajax,无法获取从javascript传递到loginme.php的参数 <form method="POST"> <input type="text" id="userid" name="userid"></input> <input type="password" id="pass" name="pass"></input> <input type="butto
<form method="POST">
<input type="text" id="userid" name="userid"></input>
<input type="password" id="pass" name="pass"></input>
<input type="button" value="Log in" onclick="letUserLogin()"/>
</form>
<?php
// username and password sent from form
$username=$_POST['userid'];
$password=$_POST['pass'];
echo"$username and $password";
?>
这是一个简单的形式
index.php
<form method="POST">
<input type="text" id="userid" name="userid"></input>
<input type="password" id="pass" name="pass"></input>
<input type="button" value="Log in" onclick="letUserLogin()"/>
</form>
<?php
// username and password sent from form
$username=$_POST['userid'];
$password=$_POST['pass'];
echo"$username and $password";
?>
loginme.php中的简单echo语句
loginme.php
<form method="POST">
<input type="text" id="userid" name="userid"></input>
<input type="password" id="pass" name="pass"></input>
<input type="button" value="Log in" onclick="letUserLogin()"/>
</form>
<?php
// username and password sent from form
$username=$_POST['userid'];
$password=$_POST['pass'];
echo"$username and $password";
?>
您正在传递GET参数:
xmlhttp.open("POST","loginme.php?userid="+userid+"&pass="+pass,true);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
。。。因此,您需要从$\u GET
,而不是$\u POST
,获取它们:
$username=$_GET['userid'];
$password=$_GET['pass'];
您可能希望使用该方法来发送数据。现在,您的有效负载为空:
xmlhttp.send();
如果需要,可以使用JQuery轻松解决此问题: 此方法还允许您将URL放在表单的操作参数中,并使用POST传输密码信息更安全: JQUERY:
$(document).on('submit', "form", function(e){ //We add a listener
e.preventDefault();
$.post($(this).attr('action'), $(this).serialize())
.done( function( data ) {
//Do something with response
});
});
请注意,您当然可以将侦听器更改为仅侦听特定表单。在这种情况下,将捕获所有提交的表单,而不是页面中的特定表单
HTML:
您使用的是
POST
,但将值显式设置到查询字符串GET
样式中。因此,基本上您发送的是一个空白的POST
您需要发送如下值:
xmlhttp.open("POST","loginme.php", true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("userid=" + userid + "&pass=" + pass);
试试这个:
var userid =encodeURIComponent(document.getElementById("userid").value)
var pass =encodeURIComponent(document.getElementById("pass").value)
var parameters="userid="+userid+"&pass="+pass
mypostrequest.open("POST", "loginme.php", true)
mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
mypostrequest.send(parameters)
使用encodeURIComponent()
对参数值中的任何特殊字符进行编码。
调用
setRequestHeader()
并将其内容类型设置为“application/x-www-form-urlencoded”
。这对于通过Ajax发出的任何POST请求都是必需的。用户ID位于使用get获得的URL中。pass从未实际发送过。您似乎不想传递密码和更多信息。对于post,您应该在请求正文中传递数据,而不是作为查询字符串。代码已编辑。现在,密码也和用户id一起发送。它返回什么?如果这些星号真的在你的代码中,那将导致它失败。它成功了。但是如果我们在open()函数中使用POST方法,那么为什么在php中使用GET呢?$\u GET
是包含GET参数的数组。它与请求协议无关。您可以根据同一请求发送get和post。URL本身中的任何内容都是get。