Ajax 调用类型 POST 显示未定义的索引错误

时间:2021-06-17 03:55:26

标签: javascript php ajax post

我有一个表格,用于显示用户上传的文件以及他们与之共享的用户的电子邮件。用户对每个文件都有一个“删除”链接。当他们单击“删除”时,我会显示一个警报模式,询问他们是否确定要删除它。如果他们继续,那么我通过对 php 文件进行 ajax 调用从数据库中删除该行。

当我进行 ajax 调用类型 POST 并传递 data: key 时,然后在我的 deleteRow.php 文件中写入 $_POST['key'] 会给我一个未定义的索引“键”错误。我不确定我是否应该使用 POST 或其他方式。我是 php 新手,所以我很感激你的帮助。如果您有任何问题,请告诉我。

这是我的 index.php 代码:

$objects = getListofObjects('FileDrop');

foreach ($objects as $key=>$object) {
    $file = $object['Key'];
    $splits = explode('/', $file);

    if (end($splits) !== '') {
        $presignedUrl = getPresignedUrlForPrivateFile($file, '+20 minutes');
        $downloadLink = '<a href="'.$presignedUrl.'">Download</a>';
        echo "<script>displayDownloadInRow('$downloadLink', '$key')</script>";
        $deleteLink = '<a href="javascript:confirmDeletion('.$key.')">Delete</a>';
        echo "<script>displayDeleteInRow('$deleteLink', '$key')</script>";
    }
}

这是我的js代码:

<script>
    function displayDownloadInRow(link, index) {
        var fileData = document.getElementsByClassName('fileName');
        fileData[index].innerHTML += "<br>";
        fileData[index].innerHTML += link;
    }
    function displayDeleteInRow(link, index) {
        var fileData = document.getElementsByClassName('fileName');
        fileData[index].innerHTML += "&nbsp;&nbsp;&nbsp;&nbsp;";
        fileData[index].innerHTML += link;
    }
    function confirmDeletion(index) {
        $('#alertDeleteConfirm').modal('show');
        document.getElementById('deleteRow').onclick = function() {
            deleteFileRow(index)
        }
    }
    function deleteFileRow(key) {
        $.ajax({
            type: "PUT",
            url: "../FileDrop/deleteRow.php",
            data: key,
            success: function (result) {
                result = JSON.parse(result);
                if (result === "deleted") {
                    $('#alertDeleteSuccess').modal('show');
                    setTimeout(function () {
                        window.location.reload(1);
                    }, 5000);
                } else {
                    $('#alertDeleteFail').modal('show');
                    setTimeout(function () {
                        window.location.reload(1);
                    }, 6000);
                }
            }
        });
    }
</script>

2 个答案:

答案 0 :(得分:1)

您需要将对象传递给数据,而不是 int/string。所以代码将是

$.ajax({
  type: 'POST',
  data: {key: key}
  ...
})

答案 1 :(得分:0)

你需要传递数据。

 $.ajax({
    type: "POST",
    url: 'abc.php',
    data: {"key":"value"},
    success: function(data){
        alert(data.value1);
    }
 });