使用两个Ajax变量验证表单

时间:2015-06-03 18:19:07

标签: javascript php jquery html ajax

请耐心等待;我尽力学习更多Ajax。我正在尝试验证我的表单中的“事件名称”字段是否已存在于我的表中,但仅当两者都是由同一用户创建时。例如,如果用户1已经有一个名为Event1的事件,则验证将检查User1下是否存在重复的事件名称。

我有以下PHP / HTML格式的片段:

<div>Event Name: </div>
<input type="text" name="eventname" id="eventname" onblur="checkeventname()" onkeyup="restrict('eventname')" size="50" maxlength="75" />
<span id="eventnamestatus"></span>

这是我的checkeventname函数:

function checkeventname(){
  var nameofevent = _("eventname").value;
  if(nameofevent != ""){
    _("eventnamestatus").innerHTML = 'checking ...';
    var ajax = ajaxObj("POST", "eventcreationpage.php");
    ajax.onreadystatechange = function() {
      if(ajaxReturn(ajax) == true) {
        _("eventnamestatus").innerHTML = ajax.responseText;
      }
    }
    ajax.send("usernamecheck="+nameofevent);
  }
}

这是我放在页面顶部的Ajax,我遇到了麻烦:

<?php
// Ajax calls this NAME CHECK code to execute
if(isset($_POST["eventnamecheck"])){
  include_once("php_includes/db_conx.php");
  $eventname = preg_replace('#[^a-z0-9]#i', '', $_POST['eventname']);
  $sql = "SELECT id FROM users WHERE eventname='$eventname' && eventcreator='$eventcreator' LIMIT 1";
  $query = mysqli_query($db_conx, $sql); 
  $eventname_check = mysqli_num_rows($query);

  if ($eventname_check < 1) {
    echo '<strong style="color:#009900;">' . $eventname . ' is not a duplicate name</strong>';
    exit();
  } else {
    echo '<strong style="color:#F00;">' . $eventname . ' is an event name already under your name</strong>';
    exit();
  }
}
?>

网页本身有用户变量(eventcreationpage.php $ eventcreator = User1)我试图通过$ eventcreator变量发送,在这种情况下是用户,但我不太确定怎么做。

1 个答案:

答案 0 :(得分:2)

ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

表明此请求将发送表单数据。接下来,在您的服务器上,如果您通过

指定了用户ID,则可以使用$ _POST [“userid”]来获取用户ID
ajax.send("userid=" + userid);

要发送userid和eventid,您可以使用

ajax.send("userid=" + userid + "&eventid=" + eventid);

如果仅从PHP获取用户标识,则可以将其呈现为脚本。这看起来像这样:

ajax.send("userid=<?php echo $eventcreator; ?>&eventid=" + eventid);

将用户名称注入字符串。但是,如果您允许使用特殊字符作为用户名,请确保它已正确转义。