我正在将一个 signup.php 页面加载到我主页上的 div 中。所有元素(表单/javascript 等)在加载的页面中都可以正常工作。唯一的问题是,一旦 php 脚本返回 ajax 响应,我就无法让它显示在 div 上。
当我独立运行 signup.php 页面时会显示响应,但在将其加载到另一个页面时不会显示。我正在使用 load() 函数来执行加载 - 我知道 load() 会剥离标签等,但在加载整个页面时不会,这就是我正在做的,所以我认为它应该可以工作。
我已经检查过响应文本确实来自 PHP 脚本,即使在主页上加载时也是如此 - 我只是无法让它显示在跨度中。
这是正在加载的注册页面 (signup.php) 的 javascript 代码(尚未包含 php 作为其工作):
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";
console.log(status.innerHTML);
} 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"){
alert(ajax.responseText);
console.log(ajax.responseText);
status.innerHTML = ajax.responseText;
_("signupbtn").style.display = "block";
} else {
console.log(ajax.status);
console.log(ajax.responseText);
_("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);
}
和 HTML 表单:
<form name="signupform" id="signupform" onsubmit="return false;">
<div>Email Address:</div>
<input id="email" 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>
<span id="status" class="statuserror">This is where i want the response to show</span>
以及用于将上述内容加载到主页上的#container div 中的 Jquery (index.php):
function becometutor(){
$('#container').slideUp(200);
$('#searchBar').slideUp(200);
setTimeout(function(){
$('#container').load("signup.php")}, 200);
$('#container').slideDown(200);
}
编辑:好的,伙计们 - 所以更新:我尝试用 signup.php 页面的 ajax 调用替换 load() 函数,然后设置将 ajax 的 html 响应放入我想要的 div 中 - 效果是一样的. 我得到了我想要的 html,但是跨度没有随着 signup.php 页面中的 ajax 错误而更新。有没有人对在 div 中加载页面有任何澄清 - 这是不可以吗?我知道 load() 在放入新内容之前会去除标签 - 但我认为只要整个页面正在加载,那么它应该不是问题 - 有什么想法吗?求求求求!这让我快疯了!
已解决:找到答案:当 signup.php 加载到索引页面时,有两个具有相同 id 的 span,因此浏览器会感到困惑并且什么也不做。这解释了为什么它也可以作为单个浏览器独立工作,并且仍然会触发所有控制台/警报 - 感谢您的输入!