function openV(){
var obj=document.getElementById("name").name+"="+document.getElementById("name").value+"&"+document.getElementById("comp").name+"="+document.getElementById('comp').value+"&"+document.getElementById('pass').name+"="+document.getElementById('pass').value;`
var oReq = new XMLHttpRequest();
oReq.onreadystatechange=function() {
if(this.readyState==4&&this.status==200){
window.alert(this.responseText);}
};
oReq.open("POST", "Validiation.php","true");
oReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
oReq.send(obj);}
我的PHP代码如下:
<?php
$name=$_REQUEST["name"];
$company=$_REQUEST["company"];
$password=$_REQUEST["password"];
//Create Connection
$conn=new mysqli("127.0.0.1","root","");
//Check Connection
if($conn->connect_error)
{
die('Connection error:'.$conn->connect_error);
}
echo 'Connection successful Mr '.$name;
echo 'Company: '.$company;
?>
我可以访问$name
,但问题是我无法访问代码中的$company
。
警告信息显示: 连接成功的Sidharth公司先生:
答案 0 :(得分:3)
我认为您应该检查document.getElementById("comp").name
的元素名称
变化:
$company=$_REQUEST["company"];
要:
$company=$_REQUEST["comp"];
答案 1 :(得分:0)
你得到名字=&gt;
java interface
表示#name 你的公司=&gt;
$ _request ['name']
但其ID为#comp
答案 2 :(得分:0)
function openV(){
var $=function(n){
return document.getElementById( n );
};
var obj=[];
['name','comp','pass'].forEach(function(e,i,a){
obj.push( $(e).name+'='+$(e).value );
});
obj=obj.join('&');
var oReq = new XMLHttpRequest();
oReq.onreadystatechange=function() {
if( this.readyState==4 && this.status==200 ){
alert(this.response);
}
};
oReq.open('POST', 'Validiation.php','true');
oReq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
oReq.send(obj);
}
由于Ajax函数正在发送POST请求,因此PHP脚本应该处理POST数组。使用REQUEST允许用户发送查询字符串(GET)或POST请求,因此比仅处理POST更安全。
PHP脚本需要使用的字段显示为name
,comp
和pass
,但是javascript正在使用ID来查找元素的名称情况可能并非如此。例如,ID可以是name
,但我们所知道的名称可能是geronimo
- 这使得PHP方面的处理变得棘手,因为名称不一定是已知的。
但是,假设每个表单元素的名称和ID都相同,那么您将/可以处理请求,服务器端,就像这样。
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' ){
$name=$_POST["name"];
$company=$_POST["comp"];
$password=$_POST["pass"];
//Create Connection
$conn=new mysqli("127.0.0.1","root","");
//Check Connection - in production never reveal too much/any db information!!!
if( $conn->connect_error ) die('Connection error:'.$conn->connect_error);
echo 'Connection successful Mr '.$name;
echo 'Company: '.$company;
}
?>
答案 3 :(得分:0)
来自_REQUEST的表单输入命名和预期参数之间存在差异 - 您期望:
$company=$_REQUEST["company"];
$password=$_REQUEST["password"];
但实际的表单输入名称是'comp'和'pass'/,根据JS,它获取输入字段,如果表单输入id等于表单输入名称/。如果JS是正确的,那么你需要改变PHP以期望相应的参数:
$company=$_REQUEST["comp"];
$password=$_REQUEST["pass"];
但是如果JS部分中的输入名称错误,那么你需要修复JS:
var obj=document.getElementById("name").name+"="+document.getElementById("name").value+"&"+document.getElementById("company").name+"="+document.getElementById('company').value+"&"+document.getElementById('password').name+"="+document.getElementById('password').value;
答案 4 :(得分:0)
我纠正了它。首先,它使用 name 属性来标识变量。其次,我改变了所有元素的id,所以现在代码就是这个。
的Javascript :
var obj=document.getElementById("nam").name+"="+document.getElementById("nam").value+"&"+document.getElementById("comp").name+"="+document.getElementById("comp").value+"&"+document.getElementById("pass").name+"="+document.getElementById("pass").value;
//Creating the XMLHttpRequest object
var oReq = new XMLHttpRequest();
oReq.onreadystatechange=function() {
//This is where you response is handled.
//The actual data is found on this.responseText
if(this.readyState==4&&this.status==200){
window.alert(this.responseText);}
};
oReq.open("POST", "Validiation.php","true");
oReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
oReq.send(obj);
}
的 PHP
<?php
$name=$_POST["name"];
$company=$_POST["company"];
$password=$_POST["password"];
//Create Connection
$conn=new mysqli("localhost","root","");
//Check Connection
if($conn->connect_error)
{
die('Connection error:'.$conn->connect_error);
}
echo 'Connection successful Mr '.$name;
echo 'Company: '.$company;?>