在表单和javascript之间丢失变量值

在表单和javascript之间丢失变量值,javascript,mysql,forms,Javascript,Mysql,Forms,我在表单值方面有很多问题,首先,我回显了MYSQL insert函数,以查看试图将哪些数据放入数据库,对于一个MYSQL insert函数,它将我输入的大部分数据替换为',因此首先我认为这是我代码中PHP部分的preg_replace函数,但我删除了它,同样的事情仍然存在现在,我不确定它出了什么问题,但我猜测Javascript和表单之间的某个地方。我现在真的不知道该转向哪里。用户表的INSERT函数工作得非常好,它会拾取所有输入的数据,但是对于这个成员表,情况就不同了 Javascript

我在表单值方面有很多问题,首先,我回显了MYSQL insert函数,以查看试图将哪些数据放入数据库,对于一个MYSQL insert函数,它将我输入的大部分数据替换为
'
,因此首先我认为这是我代码中PHP部分的
preg_replace
函数,但我删除了它,同样的事情仍然存在现在,我不确定它出了什么问题,但我猜测Javascript和表单之间的某个地方。我现在真的不知道该转向哪里。用户表的INSERT函数工作得非常好,它会拾取所有输入的数据,但是对于这个成员表,情况就不同了

Javascript

     function restrict(elem){
    var tf = _(elem);
    var rx = new RegExp;
    if(elem === "email"){
        rx = /[' "]/gi;
    } else if(elem === "username"){
        rx = /[^a-z0-9]/gi;
    } else if(elem === "mobileNumber"){
            rx = /[^0-9]/gi;
        }
    tf.value = tf.value.replace(rx, "");
}
function emptyElement(x){
    _(x).innerHTML = "";
}
function checkusername(){
    var u = _("username").value;
    if(u !== ""){
        _("unamestatus").innerHTML = 'checking ...';
        var ajax = ajaxObj("POST", "signup.php");
        ajax.onreadystatechange = function() {
            if(ajaxReturn(ajax) === true) {
                _("unamestatus").innerHTML = ajax.responseText;
            }
        };
        ajax.send("usernamecheck="+u);
    }
}
function signup(){
    var u = _("username").value;
    var e = _("email").value;
        var m = _("mobileNumber").value;
    var p1 = _("pass1").value;
    var p2 = _("pass2").value;
    var ci = _("city").value;
        var pc = _("postcode").value;
        var c = _("country").value;
        var d = _("dateOfBirth").value;
    var g = _("gender").value;
        var ln = _("lastName").value;
        var fn = _("firstName").value;

    var status = _("status");
    if(u === "" || e === "" || p1 === "" || p2 === "" || c === ""
        || g === "" || m === "" || ci === "" || pc === "" || d === ""  ){
        status.innerHTML = "Fill out required fields";
    } else if(p1 !== p2){
        status.innerHTML = "Your password fields do not match";
        }else if(m.value !== 11 && isNaN(m)){ 
        status.innerHTML = "Please enter valid mobile number";
         }else if(d === "dd/mm/yyyy"){ 
        status.innerHTML = "Please enter your date of birth";



    } else {
             //ajax to send form data to php
        //hides sign button
                _("signupbtn").style.display = "none";
        status.innerHTML = 'please wait ...';
                //wait until php verifies data
        var ajax = ajaxObj("POST", "signup.php");
        ajax.onreadystatechange = function() {
            if(ajaxReturn(ajax) === true) {
           //if sign not succesful unhide button
                    if(ajax.responseText !== "signup_success"){
                    status.innerHTML = ajax.responseText;
                    _("signupbtn").style.display = "block";
                } else {
                    window.scrollTo(0,0);
                    _("signupform").innerHTML = "OK "+u+"";
                }
            }
        };
        ajax.send("u="+u+"&e="+e+"&p="+p1+"&c="+c+"&g="+g+"&ci"+ci+"&m"+m+"&pc"+pc+"&d"+d);
    }
}
形式


请不要自己构建通过AJAX发送的查询字符串(特别是如果您不知道自己在做什么),而是使用lib的机制(我假设您使用的是一种机制,即您的ajaxObj来自哪里?)在jQuery f.e.
serialize
中提供此功能。ajaxObj来自ajax模块,我将其放在一个单独的文件中,以便在每次需要ajax时重复使用,感谢您的提示。我现在已经解决了我的问题,是否删除该问题?
<form name="signupform" id="signupform" onsubmit="return false;">
    <div>Username: </div>
    <input id="username" type="text" onblur="checkusername()" onkeyup="restrict('username')" maxlength="16">
    <span id="unamestatus"></span>
    <div>Email Address:</div>
    <input id="email" type="email" onfocus="emptyElement('status')" onkeyup="restrict('email')" maxlength="88">
    <div>Create Password:</div>
    <input id="pass1" type="password" onfocus="emptyElement('status')" maxlength="16">
    <div>Confirm Password:</div>
    <input id="pass2" type="password" onfocus="emptyElement('status')" maxlength="16">
     <div>First name:</div> 
     <input id="firstName" type="text"  /><br />
     <div>Last name:</div> 
     <input id="lastName" type="text"   /><br />
     <div>Mobile number*:</div>
     <input id="mobileNumber" onfocus="emptyElement('status')" onkeyup="restrict('mobileNumber')" maxlength="16">
    <div>Gender:</div>
    <select id="gender" onfocus="emptyElement('status')">
      <option value=""></option>
      <option value="Male">Male</option>
      <option value="Female">Female</option>
    </select>
    <div>Country:</div>
    <select id="country" onfocus="emptyElement('status')">
      <?php include_once("country_list.php"); ?>
    </select>
    <div>City:</div>
    <input id="city" onfocus="emptyElement('status')">
    <div>Postcode:</div>
    <input id="postcode" onfocus="emptyElement('status')">
    <div>Relationship Status*:</div>
    <select id="relationshipStatus" >
        <option value=""></option>
        <option value="Single">Single</option>
        <option value="Taken">Taken</option>            
                </select>
    <div>Date of Birth*:</div>
    <input id="dateOfBirth" type="text" onfocus="emptyElement('status')">
    <button id="signupbtn" onclick="signup()">Create Account</button>
    <span id="status"></span>
  </form>
 $sql = "INSERT INTO Member (`firstName`, `lastName`, `gender`, `emailAddress`, 
                        `city`, `country`, `postCode`, `relationshipStatus`, `mobileNumber`, `dateOfBirth`)       
                    VALUES('$fn', '$ln', '$g', '$e', '$ci', '$c', '$pc', '$rs', '$m', '$d')";
            $query = mysqli_query($db_conx, $sql);
            $uid = mysqli_insert_id($db_conx);

            // Establish their row in the useroptions table
           $sql = "INSERT INTO User (`Userid`, `username`, `password`, `accountType`) VALUES ('$uid','$u','$p','$accountType')";
           $query = mysqli_query($db_conx, $sql);