未定义的索引:ajax POST和/或php脚本出错?

时间:2013-11-22 03:47:58

标签: javascript php jquery ajax

我正在尝试将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总是在错误中输出警告:“错误:无法删除”

我知道这个问题已被多次询问和回答,但是除非我跳过一些小问题,否则我的代码看起来是正确的。 (但不总是......)

4 个答案:

答案 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");
    }
);