不从PHP包含的页面发送AJAX表单数据
我正在创建一个注册表单,并希望将其包含在主页上的一个div中。主页还包括“登录”表单 这两个表单都包含在页面上,并使用相应div中的php include命令,即:不从PHP包含的页面发送AJAX表单数据,php,javascript,html,ajax,forms,Php,Javascript,Html,Ajax,Forms,我正在创建一个注册表单,并希望将其包含在主页上的一个div中。主页还包括“登录”表单 这两个表单都包含在页面上,并使用相应div中的php include命令,即: <?php include_once("login.php")?> <?php include_once("signup.php")?> 第二种形式(signup.php): 电邮地址: 创建密码: 确认密码: 这是一个永久性的错误 以及它的ajax: function login(){ //
<?php include_once("login.php")?>
<?php include_once("signup.php")?>
第二种形式(signup.php):
电邮地址:
创建密码:
确认密码:
这是一个永久性的错误
以及它的ajax:
function login(){
//isolate the variables from the form
var p = _("password").value;
var e = _("email").value;
var status = _("status");
if(e != "Email" && p != "Password"){
_("loginbtn").style.display = "none";
status.innerHTML = 'please wait ...';
//start the Ajax Request
var ajax = ajaxObj("POST", "login.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
if(ajax.responseText == "login_failed"){
status.innerHTML = 'There was a problem. Please check your email and password and try again. ';
_("loginbtn").style.display = "block";
} else {
window.location = "user.php?id="+ajax.responseText;
}
}
}
//data being sent by the ajax call
ajax.send("e="+e+"&p="+p);
} else {
status.innerHTML = "You're missing something..";
}
}
function emptyElement(x){
//The _(x) function is a shortcut for getElementById
_(x).innerHTML = "";
}
//This jQuery used to pre populate the email and password fields with "email" and "password"
$('input .seachbox').each(function(){
$(this)
.data('default', $(this).val())
.focus(function(){
if ($(this).val() == $(this).data('default')||''){
$(this).val() = ''
}
})
.blur(function(){
var default_val = $(this).data('default');
if($(this).val() == ''){
$(this).val($(this).data('default'))
}
});
});
function signup(){
var e = _("email").value;
var p1 = _("pass1").value;
var p2 = _("pass2").value;
var status = _("status");
if( e == "" || p1 == "" || p2 == ""){
status.innerHTML = "Fill out all of the form data";
} else if(p1 != p2){
status.innerHTML = "Your password fields do not match";
} else {
status.innerHTML = 'please wait ...';
var ajax = ajaxObj("POST", "signup.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
if(ajax.responseText != "OK"){
status.innerHTML = ajax.responseText;
_("signupbtn").style.display = "block";
} else {
_("p1").innerHTML = "Please check your email inbox and junk mail box at <u>"+e+"</u> in a moment to complete the sign up process by activating your account. You will not be able to do anything on the site until you successfully activate your account.";
}
}
}
ajax.send("e="+e+"&p="+p1);
}
函数注册(){
var e=uuux(“电子邮件”)。值;
var p1=U1;(“pass1”).值;
变量p2=u2;(“pass2”).值;
风险值状态=uuux(“状态”);
如果(e==“”| | p1==“”| | p2==“”){
status.innerHTML=“填写所有表单数据”;
}如果(p1!=p2),则为else{
status.innerHTML=“您的密码字段不匹配”;
}否则{
status.innerHTML='请稍候…';
var ajax=ajaxObj(“POST”、“signup.php”);
ajax.onreadystatechange=函数(){
if(ajaxReturn(ajax)=true){
if(ajax.responseText!=“OK”){
status.innerHTML=ajax.responseText;
_(“signupbtn”).style.display=“block”;
}否则{
_(“p1”).innerHTML=“请稍后在“+e+”检查您的电子邮件收件箱和垃圾邮件框,通过激活您的帐户完成注册过程。在您成功激活帐户之前,您将无法在网站上执行任何操作。”;
}
}
}
发送(“e=“+e+”&p=“+p1”);
}
编辑-解决方案:-Have-3天后发现一个如此愚蠢的解决方案,我不得不分享它。基本上,我将状态div的id从“status”更改为“status1”发现现在一切正常。我想可能是因为在登录页面上,我还有一个名为status的div,因此浏览器不确定要将其放入哪个div,而什么也不做。这也解释了为什么signup.php页面在浏览器中单独运行时可以工作,但在主页中包含login.php时却不能工作
故事的寓意——确保你的身份证都是不同的!!
感谢大家的帮助。这可能只是ajax调用中的一个“输入错误”。在第二个JS代码中,您有“var e=”email“.value;”,而应该是“var e=”email“.value;”谢谢Daniel!这已经折磨了我两天了!还有一个问题-你知道为什么第二个脚本中的“状态跨度”在包含该脚本时可能不会显示AjaxResponseText吗?@Mobaz你为什么不使用一个javascript库,它会让你的生活变得更美好easy@kishore-我最近开始使用JQuery,所以只是习惯了它,但是你右-JQuery中的AJAX调用要简单得多-谢谢
<form name="signupform" id="signupform" onsubmit="return false;">
<div>Email Address:</div>
<input id="emails" type="text" class="searchbox" onfocus="emptyElement('status')" onkeyup="restrict('email')" maxlength="88">
<div>Create Password:</div>
<input id="pass1" type="password" class="searchbox" onfocus="emptyElement('status')" maxlength="16">
<div>Confirm Password:</div>
<input id="pass2" type="password" class="searchbox" onfocus="emptyElement('status')" maxlength="16">
</form>
<br> <a href="#" alt="Signup" onclick="signup()">Create Account</a><p>
<div class="statuserror"><span id="status" >This is a permanent error</span></div>
</div>
function signup(){
var e = _("email").value;
var p1 = _("pass1").value;
var p2 = _("pass2").value;
var status = _("status");
if( e == "" || p1 == "" || p2 == ""){
status.innerHTML = "Fill out all of the form data";
} else if(p1 != p2){
status.innerHTML = "Your password fields do not match";
} else {
status.innerHTML = 'please wait ...';
var ajax = ajaxObj("POST", "signup.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
if(ajax.responseText != "OK"){
status.innerHTML = ajax.responseText;
_("signupbtn").style.display = "block";
} else {
_("p1").innerHTML = "Please check your email inbox and junk mail box at <u>"+e+"</u> in a moment to complete the sign up process by activating your account. You will not be able to do anything on the site until you successfully activate your account.";
}
}
}
ajax.send("e="+e+"&p="+p1);
}