繁体   English   中英

AJAX / PHP ajax数据/回显返回“?>”

[英]AJAX/PHP ajax data/echo returning with a “?>”

我在其中一个页面中遇到一个奇怪的错误。 在简单的登录中,我使用AJAX来检查用户名是否存在。 这是我第四次复制代码,到目前为止没有问题。

该代码的工作方式如下->单击按钮,它将数据传递到索引。 索引将调度程序的控制器调用到Validation控制器,Validation检查用户名和密码,如果一切正常,则返回OK。

但是,返回的开头带有“?>”。 就像它从php中逃脱了一样。 该字符在Dispacther,ValidationControler,索引中不存在,因此未从那里添加。 我通过简单的回显返回数据,

按钮javascript

<script type="text/javascript">
$(document).on("ready",function(){
$("#btn-enviar").click(function(e){
e.preventDefault();
var pet = $("form").attr("action"); //pagina url  modificable?
var met = $("form").attr("method"); //post?
  $.ajax({
   url: "index.php?ctrl=validation&action=login",
  type: met,
  data: $("form").serialize(),
   beforeSend: function () {
                $("#resultado").html("Cargando...");    
    },
    success: function(data){    
     if(data=="ok")
     {
      $("#resultado").html(""+data);
     }
     else
     {
       $("#resultado").html(""+data);
     }
   },

  });
});
});
</script>

被调用的验证控制器

 class validationController {

 public static function login(){
    $s=DIRECTORY_SEPARATOR;
    if(!class_exists("promocion")){
        require_once ($_SERVER['DOCUMENT_ROOT'].$s."model".$s."usuario.php");
    }

    $usuario=$_POST['username'];
    $password=$_POST['password'];
    $user = new usuario();
    $mensaje="Error usuario y/o contraseña";

    //se necesita el mensaje dado que es una funcion por AJAX 
    if($user->login($usuario, $password)){
        session_start();
        $_SESSION['username'] = $usuario;
        $mensaje="ok";
        echo $mensaje;
    }else{

        echo $mensaje;
    }
    sleep(1);
 }
}

从类usuario.php登录的方法

function login($username,$password){
    if(!class_exists("userHelper")){
        require_once ("userHelper.php");
    }
    $helper=userHelper::getInstance();
    $user=$helper->login($username,$password);
    if($user==null){
        return false;
    }else{
        $this->correo=$user->correo;
        $this->id_usuario=$user->id_usuario;
        $this->password=$user->password;
        $this->privilegios=$user->privilegios;
        $this->username=$user->username;
        $this->telefono=$user->telefono;
        $this->direccion=$user->direccion;
        return true;
    }
}

以及用于登录的userHelper.php数据库连接。

public function login($username,$password){
$pdo_options[PDO::ATTR_ERRMODE]=PDO::ERRMODE_EXCEPTION;  ///username, Pass, DB
$conn= new PDO($this->connection,$this->admin,$this->pass,$pdo_options);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$stmt=$conn->prepare("SELECT * FROM `usuario` where username = :usuario and password= :password ");
$stmt->bindParam(':usuario',$username);
$stmt->bindParam(':password',$password);
$stmt->execute();
$result=$stmt->fetchAll();
if ($result==FALSE){
        return null;
}else{
        $u=new usuario();
        foreach($result as $row){
            $u->setCorreo($row['correo']);
            $u->setId($row['id_usuario']);
            $u->setPassword($row['password']);

            $u->setUsuario($row['username']);
            $u->setDireccion($row['direccion']);
            $u->setTelefono($row['telefono']);
        return $u;
        }       
}
}

然而,回报最终像这样

“?>错误使用u / o相反”

做过一个简单的if data ==“?> ok”来验证,但是我还是很困惑,为什么要添加?>? div没问题,因为出现了“ Cargando ...”而没有“?>”

另外,我做了echo var_dump($ mensaje),返回的是“?> string(29)...”等

像这样尝试

 <script type="text/javascript"> $(document).on("ready",function(){ $("#btn-enviar").click(function(e){ e.preventDefault(); var pet = $("form").attr("action"); //pagina url modificable? var met = $("form").attr("method"); //post? $.ajax({ url: "index.php?ctrl=validation&action=login", type: met, data: $("form").serialize(), beforeSend: function () { $("#resultado").html("Cargando..."); }, success: function(data){ if(data.message == 'ok') { output = data.message; $("#resultado").html(""+output); } else { output = data.message; $("#resultado").html(""+output); } }, }); }); }); </script> 

并在您的控制器中

 <?php public static function login(){ $s=DIRECTORY_SEPARATOR; if(!class_exists("promocion")){ require_once ($_SERVER['DOCUMENT_ROOT'].$s."model".$s."usuario.php"); } $usuario=$_POST['username']; $password=$_POST['password']; $user = new usuario(); $mensaje="Error usuario y/o contraseña"; //se necesita el mensaje dado que es una funcion por AJAX if($user->login($usuario, $password)){ session_start(); $_SESSION['username'] = $usuario; $mensaje="ok"; $output = json_encode(array('message' => $mensaje)); die($output); }else{ $output = json_encode(array('message' => $mensaje)); die($output); } sleep(1); } } ?> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM