Запрос отправлен, но я получаю сообщение об ошибке в консоли и не запускает скрипт - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть таблица, в которой зарегистрированы пользователи. Когда я дам вам удалить одну, я хочу получить подтверждающее сообщение, и если вы нажмете «принять», отправьте мне запрос по номеру ajax. Я делюсь своими кодами для наблюдения:

const eliminar=document.querySelectorAll('.delete'),
    tablaContactos=document.querySelector('#tabla-contactos');
//asignarles un evento mediante un bucle
eliminar.forEach(index => {
    index.addEventListener('click',eliminarUsuario);
});

function eliminarUsuario(e){
    /* Con la propiedad target podemos identificar a que elemento se le ha dado click */
    if(e.target.parentElement.classList.contains('btn-eliminar')){    
        /* Para obtener una propiedad html utilizamos el metodo getAttribute */
        const id=e.target.parentElement.getAttribute('data-id');
        const data=new FormData();
        data.append('id',id);
        const respuesta=confirm('¿Estas seguro que deseas eliminar usuario '+id+'?');
        if (respuesta){
            
             // Creación del objeto
             const xhr=new XMLHttpRequest();
              
             // Apertura de la conexión y envío a través del metodo get
             xhr.open('POST','http://localhost/Facturacion/usuario/eliminar',true);


             // Lectura de la respuesta
             xhr.onload=function(){
                  if(this.status===200){
                       const respuesta=JSON.parse(xhr.responseText);
                       console.log(respuesta);
                       
                       if (respuesta.respuesta=='exito') {
                        mostrarNotificacion('Contacto eliminado correctamente','correcto');  
                       } 
                       else{
                        mostrarNotificacion('Hubo un error','error');  
                       }
                  }
             }

             //Envío de la petición
             xhr.send(data);
            
        }
        
    }
}

function mostrarNotificacion(mensaje,clase){
    //Creamos un div y posteriormente una clase
    const notificacion=document.createElement('div');
    //En javascript añadimos clase de la siguiente manera. Cabe destacar que podemos añadir mas de dos
    notificacion.classList.add(clase,'notificacion');
    //Dentro del div añadimos un texto con el metodo textContent.
    notificacion.textContent=mensaje;
    //añadimos el div en el formulario mediante insertBefore.
    tablaContactos.insertBefore(notificacion,document.querySelector('table'));

    /* Funcion para hacer animacion en javascript */
    setTimeout(()=>{
         notificacion.classList.add('visible');

         setTimeout(() => {
              notificacion.classList.remove('visible');
              setTimeout(() => {
                   notificacion.remove();
              }, 500);
         }, 3000);
    },100);
}
public function deleteUser($id){
        $sql="DELETE FROM usuario WHERE idusuario=$id";
        $stmt=$this->db->query($sql);

        return $stmt;
    }
public function eliminar(){
        Utils::isAdmin();
        if (isset($_POST)) {
            $objUsuario=new Usuario();
            $result=$objUsuario->deleteUser(intval($_POST['id']));
            if ($result){
                $respuesta=array(
                    'respuesta'=>'exito',
                    'id_eliminado'=>$_POST['id']
                );
            }
            else {
                $respuesta=array(
                    'respuesta'=>'error'
                );
            }

        }

        die(json_encode($respuesta));

    }

Запрос фактически выполняется, и пользователь удален, но в консоли я получаю эту ошибку:

VM1652:1 Uncaught SyntaxError: Unexpected token < in JSON at position 0
    at JSON.parse (<anonymous>)
    at XMLHttpRequest.xhr.onload (eliminar-usuario.js?v=1586222368:29)
xhr.onload @ eliminar-usuario.js?v=1586222368:29
load (async)
eliminarUsuario @ eliminar-usuario.js?v=1586222368:27

но при проверке той части консоли, где отображаются запросы, я замечаю, что если вы получаете json от php драйвера

image

У меня будет ошибка в контроллере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...