【问题标题】:ajax responseText is returning header bar with echo contentajax responseText 正在返回带有回显内容的标题栏
【发布时间】:2015-08-17 00:29:44
【问题描述】:

我正在使用ajaxPHP 进行通信。当获取的数据显示数据库中存在键入的电子邮件时,我使用echo 并带有消息'电子邮件已被占用,请尝试另一封电子邮件'。但是ajax responseText正在返回header file and echoed content。这是一张图片

如何才能将回显消息作为 ajax responseText?

这是我的代码

Javascript

function signup(){
  var f=document.getElementById("firstname").value;
  var l=document.getElementById("lastname").value;
  var p=document.getElementById("password1").value;
  var p2=document.getElementById("password2").value;
  var e=document.getElementById("email").value;
  var status=document.getElementById("status");

  if(f=="" || l=="" || p=="" || p2=="" || e==""){
     status.innerHTML="All fields are required";
  }
  else if(p!=p2){
     status.innerHTML="passwords didn't match";
  }
  else{
    document.getElementById("submitX").style.display = "none";
    //status.innerHTML = 'please wait ...';
    var x=new XMLHttpRequest();
    x.open("POST","signup.php",true);
    x.setRequestHeader("content-type","application/x-www-form-urlencoded");
    x.onreadystatechange=function(){
    if(x.readyState == 4 && x.status == 200){
     if(x.responseText != "success"){  //this condition is not met at any circumstances
         document.getElementById("submitX").style.display = "block";
         status.innerHTML="";
         //alert(x.responseText);
         status.innerHTML = x.responseText;
        }
       else{
         window.scrollTo(0,0);
         status.innerHTML ="";
         document.getElementById("diff_for").innerHTML = "";
         document.getElementById("form1").innerHTML = "";
         document.getElementById("form1").innerHTML = "Thank you for creating an account.A Welcome email has been sent to your email.<br/><br/>Go to <a href='login.php'>Login</a>";

     }

    }
   }
  x.send("F="+f+"&L="+l+"&E="+e+"&P="+p+"&P2="+p2);
 }
}

PHP

if(isset($_POST['F'])){
  $firstname=$_POST['F'];
  $lastname=$_POST['L'];
  $password=$_POST['P'];
  $passmatch=$_POST['P2'];
  $pass=md5($password);
  $email=$_POST['E'];

 $sqlx1="SELECT id FROM user_det WHERE email=? LIMIT 1";

   mysqli_stmt_prepare($stmt30, $sqlx1);
   mysqli_stmt_bind_param($stmt30, "s", $email);
   mysqli_stmt_execute($stmt30);
   mysqli_stmt_store_result($stmt30);
   mysqli_stmt_bind_result($stmt30, $idx1);
   $num_row1x=mysqli_stmt_num_rows($stmt30);

     if($num_row1x>0){
       //ob_end_clean();
       //ob_start();
       $abul="<br>This email is already registered.Please use another email";
       echo $abul;
       exit();
     }
     else{
       $sql11x="INSERT INTO user_det(first_name,last_name,password,email,signup_date)
               VALUES(?,?,?,?,now())";

       mysqli_stmt_prepare($stmt30, $sql11x);
       mysqli_stmt_bind_param($stmt30, "ssss", $firstname, $lastname, $pass, $email);
       mysqli_stmt_execute($stmt30);                   

       echo "success";
     }

非常感谢您的帮助。

感谢您的宝贵时间。

【问题讨论】:

  • 返回头文件和相关内容是什么意思。对我来说好像没问题?它与您所写的完全一致。也许我不明白。能否详细解释一下
  • 我只需要从x.responseText 获取This email is already taken.......。但是当我使用alert 查看响应时,它会返回&lt;html&gt;&lt;head&gt;&lt;style&gt;.....&lt;div id='bar'&gt;&lt;/div&gt;&lt;/head&gt;&lt;/html&gt;&lt;br&gt;This email is already taken.Please use another email。我只需要回显消息,以便我可以执行@987654333 @ 回复文本
  • @CarlSaldanha 我第一次喜欢你。但我现在明白“头文件”是带有“Wagall”之类的黑条。它位于屏幕截图的顶部,然后位于类似手机的部分底部,就在预期消息之前。但我不知道它是从哪里来的……
  • @cFreed 完全正确。你说得对
  • 哦。谢谢 cFreed。 @编码器。您是否将任何 PHP 导入到上述代码中,或者是整个文件的代码。您还使用任何 PHP 框架还是纯 PHP

标签: javascript php ajax mysqli


【解决方案1】:

有了你的附加评论,我现在明白发生了什么。

只有你发布的部分PHP代码是不可见的,如果不是太重,你应该发布整个代码。

但可以肯定的是,您的错误位于 PHP 文件顶部附近的某个位置:当您测试 if(isset($_POST['F'])){ 时,您已经输出了由同一个 PHP 文件生成的原始页面的开头。

顺便说一句,您还应该确保在回显响应 Ajax 调用的消息后exit;

【讨论】:

  • 我在signup.php 文件的顶部添加了top_bar.php(顶部的那个黑条)。它会导致问题吗?
  • 在回显 msg 以进行 ajax 响应后,我确实使用了 exit()
  • 您没有指明您发布的代码部分的名称。所以我不确定什么,但猜想sign.up 是您发布的PHP 部分的名称。如果是这样,是的,这就是你的问题的原因。这个 PHP 文件完全符合您的“要求”,因此如果 top_bar.php 输出内容,它就是返回给 Ajax 调用的内容的一部分。
  • @您的第二条评论(确实使用了exit;)。哦,是的,我在主要信息之后看到它。但不是在最后一个 echo "success" 之后。
  • 我在成功消息后使用exit() 进行了测试。但仍然给出相同的结果。任何想法,发生了什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多