gpt4 book ai didi

php - 来自已加载页面的 Javascript 响应未显示在 中,尽管我可以在 Firebug 中看到它

转载 作者:搜寻专家 更新时间:2023-10-31 22:07:26 29 4
gpt4 key购买 nike

我正在将一个 signup.php 页面加载到我主页上的一个 div 中。所有元素(表单/javascript 等)在加载的页面中都运行良好。唯一的问题是,一旦 php 脚本返回 ajax 响应,我就无法让它显示在 div 上。

当我独立运行 signup.php 页面时会出现响应,但当它加载到另一个页面时不会出现。我正在使用 load() 函数来执行加载 - 我知道 load() 会去除标签等,但当您加载整个页面时不会,这就是我正在做的,所以我认为它应该可以工作。

我已经检查过响应文本确实来自 PHP 脚本,即使在主页上加载时也是如此 - 我只是无法让它显示在 span 中。

这是正在加载的注册页面 (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>

以及用于将上述内容加载到主页 (index.php) 上的#container div 中的 Jquery:

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,但 span 不会随着 signup.php 页面中的 ajax 错误而更新。有没有人对在 div 中加载页面有任何澄清 - 这是不行的吗?我知道 load() 在放入新内容之前会去除标签 - 但我认为只要整个页面都在加载那么它应该不是问题 - 有什么想法吗?拜托拜托拜托!这让我发疯!

已解决:找到答案:当 signup.php 加载到索引页面时,有两个 span 具有相同的 id,因此浏览器变得困惑并且没有做任何事情。这解释了为什么它也可以作为独立浏览器工作,也可以作为单个浏览器工作,并且仍然会触发所有控制台/警报 - 感谢您的输入!

最佳答案

我本来想评论这个的,可惜我的rep不够高,所以我必须提交一个答案。

问题不在于 load() 或在 div 中加载页面。我已经毫无问题地模拟了所有这些。

如果没有看到所有的 ajax 代码,很难判断发生了什么。对此:

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";
}

警报和 console.log 是否触发?您能否将状态设置为此函数内部或外部的任何内容?

关于php - 来自已加载页面的 Javascript 响应未显示在 <span> 中,尽管我可以在 Firebug 中看到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16522676/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com