首页 > 解决方案 > 未定义的索引 $_POST // 未捕获的 SyntaxError: Unexpected token < in JSON at position 0

问题描述

最近我开始在 Udemy 课程中学习 Web 开发。当我使用下面的代码时,控制台出现错误“Uncaught "SyntaxError: Unexpected token < in JSON at position 0"。查看后我意识到问题是“Notice: Undefined index: accion”,然后是引起通知的文件名和行。所以,我问了我的助教,他只是告诉我在代码中输入“error_reporting(E_ALL ^ E_NOTICE);”,如下所示:

<?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');

我知道那是改变错误报告级别并使我的代码工作,但不是我正在寻找的解决方案。

我尝试以不同的方式使用函数“isset”,但它不起作用(我可能做错了什么)。


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

我也尝试在开始时设置变量,如下所示:

$accion = $_POST['accion'];

但它也不起作用。我不知道还能做什么。我一直在谷歌搜索,并且在使用“$_POST”时看到了使用“isset”函数修复的类似问题,但唯一的区别是我使用了等号运算符(不知道这是否有关系)。如上所述,我还尝试设置此变量...

<?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);




}

?>

该通知出现在$_POST['accion'] == 'crear'尝试删除 ( $_GET['accion'] == 'borrar') 和$_GET['accion'] == 'borrar'尝试创建 ( $_POST['accion'] == 'crear') 的行中。

标签: phppostindexingget

解决方案


推荐阅读