0

Recently I've started to learn web dev in a Udemy course. When I use the code below, the error "Uncaught "SyntaxError: Unexpected token < in JSON at position 0" comes to the console. After looking at it, I realized that the problem was "Notice: Undefined index: accion" followed by the file name and line causing the notice. So, I asked my teaching assistant and he just told me to put "error_reporting(E_ALL ^ E_NOTICE);" in the code, like this:

<?php

**error_reporting(E_ALL ^ E_NOTICE);**

if($_POST['accion'] == 'crear') {
    // Creará un nuevo registro den la base de datos

    require_once('../funciones/bd.php');

I know that is to change the error reporting level and makes my code work but is not the solution I am looking for.

I've tried to use the function "isset" in different ways and it doesn´t work (I'm probably doing something wrong).


 1. if isset(($_POST['accion']) == 'crear') {
 2. if isset(($_POST['accion'] == 'crear')) {

I've also tried to set the variable at the beginning, like this:

$accion = $_POST['accion'];

But it doesn´t work either. I don't know what else to do. I've been Googling and I've seen similar things that has been fixed using the function "isset" when using "$_POST" but the only difference is that I use the equal operators (don't know if that has something to do). And as mentioned above, I've also tried to set this variable...

<?php

if($_POST['accion'] == 'crear') {
    // Creará un nuevo registro den la base de datos

    require_once('../funciones/bd.php');

    // Validar las entradas
    $nombre = filter_var($_POST['nombre'], FILTER_SANITIZE_STRING);
    $empresa = filter_var($_POST['empresa'], FILTER_SANITIZE_STRING);
    $telefono = filter_var($_POST['telefono'], FILTER_SANITIZE_STRING);

    try {
        $stmt = $conn->prepare("INSERT INTO contactos (nombre, empresa, telefono) VALUES(?, ?, ?)");
        $stmt->bind_param("sss", $nombre, $empresa, $telefono);
        $stmt->execute();
        if ($stmt->affected_rows == 1) {
            $respuesta = array (
                'respuesta' => 'correcto',
                'datos'=> array(
                    'nombre' => $nombre,
                    'empresa' => $empresa,
                    'telefono' => $telefono,
                    'id_insertado' => $stmt->insert_id
                )
            );
        }

        $stmt->close();
        $conn->close();

    } catch(Exception $e) {
        $respuesta = array(
            'error' => $e->getMessage()
        );
    }

    echo json_encode($respuesta);
}

if($_GET['accion'] == 'borrar') {
    require_once('../funciones/bd.php');

    $id = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT);

    try {
        $stmt = $conn->prepare("DELETE FROM contactos WHERE id = ? ");
        $stmt->bind_param("i", $id);
        $stmt->execute();
        if($stmt->affected_rows == 1) {
            $respuesta = array (
                'respuesta' => 'correcto'
            );
        }
        $stmt->close();
        $conn->close();
    } catch(Exception $e){
        $respuesta = array(
            'error' => $e->getMessage()
        );
    }
    echo json_encode($respuesta);
}
if($_POST['accion'] == 'editar') {
    //echo json_encode($_POST);

    require_once('../funciones/bd.php');

    // Validar las entradas
    $nombre = filter_var($_POST['nombre'], FILTER_SANITIZE_STRING);
    $empresa = filter_var($_POST['empresa'], FILTER_SANITIZE_STRING);
    $telefono = filter_var($_POST['telefono'], FILTER_SANITIZE_STRING);
    $id = filter_var($_POST['id'], FILTER_SANITIZE_NUMBER_INT);

    try {
        $stmt = $conn->prepare("UPDATE contactos SET nombre = ?, telefono = ?, empresa = ? WHERE id = ?");
        $stmt->bind_param("sssi", $nombre, $telefono, $empresa, $id);
        $stmt->execute();
        if($stmt->affected_rows == 1){
            $respuesta = array(
                'respuesta' => 'correcto'
            );
        } else {
            $respuesta = array(
                'respuesta' => 'error'
            );
        }
        $stmt->close();
        $conn->close();
    } catch(Exception $e){
        $respuesta = array(
            'error' => $e->getMessage()
        );
    }
    echo json_encode($respuesta);




}

?>

The notice comes in the line for $_POST['accion'] == 'crear' when trying to delete ($_GET['accion'] == 'borrar') and in the line for $_GET['accion'] == 'borrar' when trying to create ($_POST['accion'] == 'crear').

  • Your TA shouldn't be teaching PHP. `if(isset($_GET['accion']) && $_GET['accion'] == 'borrar') {` – AbraCadaver May 21 '20 at 19:16
  • "SyntaxError: Unexpected token < in JSON at position 0" - that happens _in the browser, not PHP_ because the server (which is running PHP) is returning "not JSON" for the request. If the PHP request is randomly failing, it will return "not JSON" (eg. some HTML error page or text or whatnot). However, that error message is not _from_ PHP itself, only a result of a bad response returned.. – user2864740 May 21 '20 at 19:19

0 Answers0