传递由Js函数产生的变量(到Ajax),但PHP将其变为'NULL'

时间:2013-04-19 17:18:12

标签: php javascript

此函数通过将输入字符串与数据库中PHP拾取的数据进行比较,正确检查输入字符串是否已被使用。我的问题是,当我通过Ajax传递此变量时,它返回'NULL',但是当我传递其他变量时,它们被正确发送,因此ajax函数正在工作。也许我的职能中的某些事情应该受到指责?

var string, code, codUp, result;
function check(){
      string="<?php echo $html; ?>";
      code = document.getElementById('this_code').value;
      codUp = code.toUpperCase();
      result=string.split(" ");      

if (document.getElementById('this_code').value === "")
{
    return false;
}
else if (result.indexOf(codUp) === -1)
{
    return false;
}
else{alert ('Code already in use.');}
};

AJAX

ajax.open('GET','agencies/gen_ag.php?action=add&name='+name+'codeUp='+codUp+'&nocomp='+nocompt_ag,true);

PHP

if($_GET['action']=='add')  {
$res_seecode = mysql_query("SELECT * FROM agencies WHERE EMP_CODE = '$_GET[code]'");
if(!mysql_num_rows($res_seecode))   {
    $res_add = mysql_query("INSERT INTO agencies VALUES      ('NULL','$_GET[codUp]','$_GET[name]'");

            echo 'Agencie created.';
}

Var_dump();返回名称但不返回codUp。

2 个答案:

答案 0 :(得分:2)

查看查询字符串:

?action=add&name='+name+'codeUp='+codUp'&nocomp='+nocompt_ag

是:

  • 操作(是“添加”)
  • 名称(name变量的值)
  • codeUp(codUp变量的值)
  • nocomp(nocompat_ag变量的值)

要将发送到服务器,请将密钥$_GET$_POST$_REQUEST一起使用。< / p>

您应该使用$_GET["codeUp"],因为您在查询字符串中使用的密钥是“codeUp”。 codUp只是一个Javascript变量,它保存了为“codeUp”键发送到服务器的值。

答案 1 :(得分:1)

除了确保变量名称匹配(您仍然在一个查询中引用code)之外,您还应该对您的值进行URL编码...#

ajax.open('GET','agencies/gen_ag.php?action=add&name='+encodeURIComponent(name)+'codeUp='+encodeURIComponent(codUp)'&nocomp='+encodeURIComponent(nocompt_ag),true);

请注意使用encodeURIComponent() - 否则,如果您的姓名包含非{url-safe}字符,例如?&,则会破坏内容