我正在尝试将ajax POST发送到php文件,但是php文件发送“未定义索引”的通知,并且php文件似乎永远不会收到我试图发送它的值。我一直在寻找为什么这不能正常工作的答案,所以希望有人可以给我一些见解。
我的javascript函数从html接收一个值,并接收正确的值。 (在这种情况下,它是“1”)
function deleteMediaFromDatabase(val)
{
$.ajax({ url: 'deleteMediaFromDatabase.php',
data: {vals : val},
type: 'post',
success: function(output) {
alert(output);
},
error: function(request, status, error){
alert("Error: Could not delete");
}
});
}
以下是我应该收到帖子的php文件的一部分:
<?php
ini_set("display_errors", "On");
error_reporting(E_ALL);
$val = $_POST["vals"];
// create connection
$con = mysqli_connect(<stuff you don't care about>);
error_log($val . ' is the value', 3, "./error.log");
?>
我是,但是从php获取此错误消息:
注意:未定义的索引:vals in 第9行的/xxx/xxx/htdocs/AdminPanel/deleteMediaFromDatabase.php
我的javascript总是在错误中输出警告:“错误:无法删除”
我知道这个问题已被多次询问和回答,但是除非我跳过一些小问题,否则我的代码看起来是正确的。 (但不总是......)
答案 0 :(得分:1)
jquery的语法有错误。你错过了数据的语法。这应该是这样的 -
function deleteMediaFromDatabase(val)
{
$.ajax({ url: 'deleteMediaFromDatabase.php',
data: {'vals' : val},
type: 'post',
dataType:'json',
success: function(output) {
alert(output);
},
error: function(request, status, error){
alert("Error: Could not delete");
}
});
}
答案 1 :(得分:0)
问题可能来自未指定的dataType,或者指定的dataType与服务器返回的不匹配。
明确设置dataType,例如
dataType:'json'
并确保您的脚本返回您选择的数据类型中“已编码”的数据,例如用PHP:
echo json_encode($something);
答案 2 :(得分:0)
而不是:
$val = $_POST["vals"];
使用它:
if (isset($_POST['vals']) {
$val = $_POST['vals'];
}
答案 3 :(得分:-1)
更改Ajax语法...
$.ajax({
type: "POST",
url: 'deleteMediaFromDatabase.php',
data: {'vals' : val},//Have u tried this
success: function(output) {
alert(output);
}
error: function(request, status, error){
alert("Error: Could not delete");
}
);