使用两个Ajax变量验证表单

Validating Form With Two Ajax Variables

本文关键字:Ajax 变量 验证 表单 两个      更新时间:2023-09-26

请耐心等待;尽我最大的努力学习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变量,这将是用户在这种情况下,但我不太确定如何做到这一点。

Set

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

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

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

要同时发送userid和eventid,可以使用

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

如果只从PHP获取用户id,则可以将其呈现到脚本中。它看起来像这样:

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

将用户名注入到字符串中。如果允许用户名使用特殊字符,请确保正确转义。