PHP if(isset($ _ POST ['uname']))没有做任何事情?

时间:2013-04-11 20:22:27

标签: php forms isset

我有两页。第一页有两个文本格式如下:

<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方法可以查看数据库中的项目) / p>

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>

2 个答案:

答案 0 :(得分:2)

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

[已编辑]执行订购功能

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);
}

答案 1 :(得分:0)

<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 console来调试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调用以运行插入而无需提交按钮