PHP if(isset($_POST[';uname';]))什么都不做


PHP if (isset($_POST['uname'])) not doing anything?

我有两页。第一页有两种类似的文本形式:

<form name="NameForm">
Name: <input type = "text" name = "uname">
Location: <input type = "text" name = "ulocation">
<button type="button" onClick="MakeRequest()"">Save</button>
</form>

它使用类似这样的javascript将信息推送到第二页(注意,这与上面的代码在同一页上(:

<script>
function MakeRequest()
{
// get values
var uname = document.NameForm.uname.value;
var ulocation = document.NameForm.ulocation.value;
// validation stuff here that detects browser
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("result").innerHTML=xmlhttp.responseText;
    }
  }
var url = "location.php?uname=" + uname + "&ulocation=" + ulocation;
xmlhttp.open("POST", url, true);
xmlhttp.send();
}
</script>

所以问题是,页面上执行所有服务器通信的php脚本没有读取并将这个post请求中的变量存储到我的数据库中。(我的其他查看数据库中项目的get方法运行良好(

if (isset($_POST['uname']))
{
    $name = $_POST['uname'];
$location = $_POST['ulocation']
}

然后查询会像一样

//$table and the other undefined variables are the names of my table & columns
$query = "INSERT INTO $table ($tablename, $tablelocation) VALUES ('$name', '$location')";

基本上,我正试图让这个查询发挥作用。如果我删除If语句,它将$name存储到数据库中,但不会存储$location。

编辑:我忘了添加

<div id="result">
</div>

您正在发送一个GET。发送POST尝试:

[edited]执行命令的功能

function XHR(){
    if(typeof XMLHttpRequest !=="undefined"){
        try{ return new XMLHttpRequest(); } catch (e){}
    }
    if(typeof ActiveXObject !=="undefined"){
        try{ return new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){}
        try{ return new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){}
    }
    return false;
}
function MakeRequest()
{
    // get values
    var uname = document.NameForm.uname.value;
    var ulocation = document.NameForm.ulocation.value;
    // validation stuff here that detects browser
    var url = "location.php";
    xmlhttp = XHR();//Fixed
    xmlhttp.open("POST", url, true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");//Fixed
    xmlhttp.onreadystatechange=function(){
        if (xmlhttp.readyState==4) {
            if(xmlhttp.status==200){
                document.getElementById("result").innerHTML = xmlhttp.responseText;
            } else {
                document.getElementById("result").innerHTML = "ERROR:"+xmlhttp.status;
            }
        }
    };
    xmlhttp.send("uname=" + uname + "&ulocation=" + ulocation);
}
<form name="NameForm">
Name: <input type = "text" name = "uname">
Location: <input type = "text" name = "ulocation">
<button type="button" onClick="MakeRequest()"">Save</button>
</form>

您缺少一个表单方法。在您的情况下,您希望:

<form name='NameForm" method="POST">

如果这不能解决您的问题,那么下载firebug for firefox或chrome控制台并使用它来调试javascript错误。

JS中的错误不会输出到文本中。您将需要使用调试控制台。

通过html表单执行插入

我会将您的HTML修改为:

<form name="NameForm" method="POST">
Name: <input type = "text" name = "uname">
Location: <input type = "text" name = "ulocation">
<button type="button" onClick="MakeRequest()"">Save</button>
<input type='submit' name='SubmitForm' value='SUBMIT THIS FORM'>
</form>

然后我的PHP代码:

<?php 
if(isset($_POST['SubmitForm'])){
   $Name = $_POST['uname'];
   $Location = $_POST['ulocation'];
   // Perform validation for these inputs, check if empty, set correctly ETC
    $query = "INSERT INTO $table ($tablename, $tablelocation) VALUES ('$name', '$location')";
}

然后在PHP脚本中调用Javascript函数;或者执行ajax/jquery调用来运行插入,而不需要提交按钮