php - 未定义的索引 $_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'
) 的行中。
解决方案
推荐阅读
- javascript - Nuxt.js 动态组件错误“要么将模板预编译为渲染函数,要么使用编译器包含的构建”
- python - 如何在同一屏幕中显示列表视图以及如何制作搜索框以提供建议
- r - 为什么来自 forcats 的 fct_lump 无法处理我的数据?
- google-apps-script - 使用脚本在 Google 电子表格中自动增加 ID
- java - JPA - 具有嵌入 ID 的映射列表属性
- google-cloud-platform - Debian 9 上的 OpenCl 安装程序未检测到已安装的 lsb_core
- node.js - 将数据附加到 .json 文件
- python - 使用scrapy,python从DIV中的第二个孩子获取文本
- kubernetes - 从 kubelet 批准证书后,kubenetes 无法获取节点信息
- javascript - 事件处理程序被多次触发