首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在这种情况下Ajax不起作用,我也不知道为什么

在这种情况下Ajax不起作用,我也不知道为什么
EN

Stack Overflow用户
提问于 2019-07-24 13:28:43
回答 2查看 79关注 0票数 1

我试图从php文件中以json的身份接收一些数据,php看起来很好,html也很好,但是the文件没有执行.done函数,我也找不到原因。我使用的Jquery版本是3.1.0,我正在为样式使用引导,但我认为它并不重要。

HTML文件:

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Registro Chat</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>
<body>
<h1>Chat 2.0</h1>
<div class="container col-md- mt-4">
    <form id="formulario">
      <div class="form-group">
        <label for="usuario">Nombre de Usuario</label>
        <input type="text" class="form-control" id="usuario" aria-describedby="emailHelp" placeholder="Introduzca el nombre de usuario">
        <p id="p-usuario"></p>
      </div>
      <div class="form-group">
        <label for="email">Email</label>
        <input type="text" class="form-control" id="email" aria-describedby="emailHelp" placeholder="Introduzca su email">
        <p id="p-email"></p>
      </div>
      <div class="form-group">
        <label for="contra1">Contraseña</label>
        <input type="password" class="form-control" id="contra1" aria-describedby="emailHelp" placeholder="Introduzca una contraseña">
        <p id="p-contra1"></p>
      </div>
      <div class="form-group">
        <label for="contra2">Repita la Contraseña</label>
        <input type="password" class="form-control" id="contra2" placeholder="Repita su contraseña">
        <p id="p-contra2"></p>
      </div>
      <button type="submit" class="btn btn-success bg-success">Enviar</button>
      <a href="principal.html"><button type="button" class="btn btn-success bg-success">Inicio de Sesión</button></a>
    </form>
</div>  
<script src="//code.jquery.com/jquery-3.1.0.min.js"></script>
<script src="accionregistro.js"></script>
</body>
</html>

JQuery文件:

代码语言:javascript
运行
复制
$(document).ready(principal);

function principal(){

$('#formulario').submit(runAjax);
}

function runAjax(event){

var enviados = {
    'usuario' : $('#usuario').val(),
    'email' : $('#email').val(),
    'contra1' : $('#contra1').val(),
    'contra2' : $('#contra2').val()
    };

$.ajax({
    type        : 'POST',
    url         : 'backendregistro.php',
    data        : enviados,
    dataType    : 'json',
    encode      : true  
})
.done(function(datos){
    alert();

    if(datos.exito){
            alert();
            $('0#p-usuario').text(datos.mensaje);
    }else{
        if(datos.error.vacio){
                alert(datos.error.vacio);
                //$('#p-usuario').text(datos.error.vacio);
        }
        if(datos.error.usuario){
                $('#p-usuario').text(datos.error.usuario);
        }
        if(datos.error.email){
                $('#p-email').text(datos.error.email);
        }
        if(datos.error.notmatch){
                $('#p-contraseña1').text(datos.error.notmatch);
        }
        }

});
event.preventDefault();
}

PHP文件:

代码语言:javascript
运行
复制
<?php  
$error=array();
$datos=array();

if(empty($_POST['usuario'])||empty($_POST['contra1'])||empty($_POST['contra2'])||empty($_POST['email'])){
    $error['vacio']="No puede haber campos en blanco";
}else{
    echo
        $usuario = $_POST['usuario'].
        $email = $_POST['email'].
        $contraseña1 = $_POST['contra1'].
        $contraseña2 = $_POST['contra2'];
}
//definimos la conexion a la base de datos
$mysqli = new mysqli('localhost','chat','chat2019','chat');

//comprobamos si el email ya existe
$mysqli -> query("select * from users where email='".$email."'");
if($mysqli->affected_rows!=0&&!empty($email)){
    $error['email']="Ese email ya está registrado";
} 
//comprobamos que no exista el usuario
$mysqli->query("select * from users where user='".$usuario."'");
if($mysqli->affected_rows!=0 && !empty($usuario)){
    $error['usuario']="Ya existe ese nombre de usuario";
}

//si no hay errores hacemos el insert
if(empty($error)){
    $datos['exito']=true;
    $datos['mensaje']="Usuario registrado correctamente";
    $mysqli->query("insert into users values ('".$usuario."','".$contraseña1."','".$email."')");
}else{
    $datos['exito']=false;
    $datos['error']=$error;
}

echo json_encode($datos);  

?>

当我试图在控制台中查看是否每件事情都进行得很顺利时,似乎正在发送json,但是完成的函数却无法工作。我在网络编程,我知道我做的方式是非常不安全的,但我只想知道为什么它不工作,谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-24 16:59:11

我已经解决了这个问题,在php文件中函数affected_rows之前和之后缺少空白。谢谢你的回答。

票数 0
EN

Stack Overflow用户

发布于 2019-07-24 13:34:15

首先,按照jQuery文档done回调类似于success。因此,您必须尝试添加fail()always()回调以确定响应。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57184112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档