У меня есть странная ошибка на одной из моих страниц. В простом Login, im используя AJAX, чтобы проверить, существует ли имя пользователя. Это 4-й раз, когда я копирую код, и до сих пор у него не было проблем.AJAX/PHP ajax data/echo, возвращающийся с «?» «
Код работает следующим образом:> при нажатии кнопки он передает данные индексу. Индекс вызывает диспетчер диспетчера для контролера проверки, проверка проверяет имя пользователя и пароль, и если все это нормально, оно возвращает ok.
Однако возвращение приходит с «?», Добавленным в начале. как будто это ускользнуло от php. Этот символ нигде не находится в Dispacther, ValidationControler, index, поэтому он не был добавлен оттуда. Я возвращаю данные с простым эхо,
Кнопка 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;
}
}
}
однако, возвращение в конце концов, как этот
"?> Новичок Ошибка у/о contraseña"
сделал простой, если данные == "?> ОК", чтобы подтвердите, но я все еще озадачен, почему это?> добавлено? это не проблема с div, потому что «Cargando ...» появляется без «?>»
Кроме того, я сделал echo var_dump ($ mensaje), а return - «?> string (29) .. . "и т.д.
Вы проверили этот файл 'require_once ($ _SERVER [ 'DOCUMENT_ROOT'] $ s "модель" $ s "usuario.php"....)'? Может быть, вывод '?>' Встречается там? – jrn
usuario.php возвращает только логическое значение или объект «usuario». Так что нет –
Не могли бы вы разместить полный файл? Кроме того, что происходит в 'new usuario();'? Может быть, поделиться этими двумя файлами? – jrn