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