Javascript 单击后,未定义删除

Javascript 单击后,未定义删除,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我的代码有问题,但我找不到为什么它不工作 我正在用AJAX创建一个文件删除链接 我知道我的删除页面正在工作,但是我的javascript没有去删除文件 这是我代码的一部分 formatoverzicht.php <script type="text/javascript" src="/website/libraries/jquery.js"> function deleteFileAjax(filename) { scriptitem = document.createElemen

我的代码有问题,但我找不到为什么它不工作

我正在用AJAX创建一个文件删除链接

我知道我的删除页面正在工作,但是我的javascript没有去删除文件

这是我代码的一部分

formatoverzicht.php

<script type="text/javascript" src="/website/libraries/jquery.js">
function deleteFileAjax(filename) { 
scriptitem = document.createElement('script');
scriptitem.type = 'text/javascript';
scriptitem.src = 'ajax.php?filename=' + filename;
scriptitem.id = 'ajax';
document.body.appendChild(scriptitem);
setTimeout('document.body.removeChild(document.getElementById("ajax"))', 500);
}

</script>

<?php
$results = $db->query("SELECT * FROM format");
echo "<table border= 1><tr><td>Bestands naam</td><td>Groote</td><td>Laatst aangepast</td>         <td>Download</td><td>Verwijderen</td></tr>";

if (is_dir($dir)) {
if ($dh = opendir($dir)) {
    while (($file = readdir($dh)) !== false) {          
        $filelocation = "uploads/". $file;

        $filesize2 = filesize($filelocation);

        if($filesize2 < '999'){
            $size = "Byte";
        }else if($filesize2 > '1000' &&  $filesize2 < '999999'){
            $size = "KB";
            $filesize = $filesize2 / 1000;
        }else if($filesize2 > '1000000' &&  $filesize2 < '999999999'){
            $size = "MB";
            $filesize = $filesize2 / 1000000;
        }else if($filesize2 > '1000000000' &&  $filesize2 < '999999999999'){
            $size = "GB";
            $filesize = $filesize2 / 1000000000;
        }
        $filesizeround = number_format((float)$filesize, 2, ',','');

        if($file != '.' && $file != '..' && $file != "desktop.ini"){
            $lastedit = date("j-n-o H:i", filemtime($filelocation));

 $fileplace = "uploads/" .$file;

            echo "<tr><td>".$file."</td><td>".$filesizeround. " " .$size."</td>      <td>". $lastedit ."</td><td><a href='$fileplace' download='$file' '>Download</a></td><td>";
            ?> <button onclick="deleteFileAjax(<?php echo $file ?    >)">Delete</button></td></tr><?php
        }
    }
    closedir($dh);
    }
}

?>

函数deleteFileAjax(文件名){
scriptitem=document.createElement('script');
scriptitem.type='text/javascript';
scriptitem.src='ajax.php?filename='+filename;
scriptitem.id='ajax';
document.body.appendChild(scriptitem);
setTimeout('document.body.removeChild(document.getElementById(“ajax”)),500);
}

调试JavaScript错误时,应始终查看呈现的源代码

onclick="deleteFileAjax(<?php echo $file ?    >)"
那么你有一个变量MYFILE吗?不,它应该是一个字符串,所以它需要引号

onclick="deleteFileAjax('<?php echo $file ?>')"
                        ^                   ^
onclick=“deleteFileAjax(“”)”
^                   ^

您需要在按钮中扭曲
删除文件ajax(“”)

 <button onclick="deleteFileAjax('<?php echo $file; ?>')">Delete</button>
试试这个:

<button type="button" onClick="deleteFileAjax('<?php echo $file; ?>')">Delete</button>

您没有使用Ajax。您正在做的是将另一个文件加载到文件体中,然后将其删除,这是一个坏主意。你应该看看。您想做的一个例子是:

function deleteFileAjax(filename) {
    $.ajax(function() {
        type: 'POST',
        url: 'ajax.php',
        data: { filename: $(this).data("file") },
        success: function() {
            alert("File deleted");
        }
    });
}
您的按钮也有一个错误:

<button onclick="deleteFileAjax(<?php echo $file ?    >)">
最后,执行删除操作的页面:

<?php

if (isset($_POST['filename'])) {
  if (unlink(htmlentities("uploads/". $_POST['filename']))) {
  echo "SUCCESS";
  }
}
?>


GET请求删除是个坏主意。我不明白。那么“DELETE is not defined”(删除未定义)是如何相关的呢?我和@OfirBaruch处于同一条船上,我没有看到任何名为“DELETE”的变量我有tryd evrything,但我得到的唯一错误是deleteFileAjax没有定义。所以我认为某处出了问题,但我找不到。坦白地说,你的代码片段有很多不好的做法:包括jQuery和编写原始js[以执行自制JSONP请求];将mysql与[invalid]html、业务逻辑和入侵js混合使用;使用GET执行删除。我真诚的建议是以正确的方式学习web开发,而不是热修复一堆无法维护的代码。啊哈,但是我仍然有一个问题,那就是deleteFileAjax没有定义。我找不到该部分的解决方案。@user3182383我也更新了我的答案,以便为您解决该问题。我得到以下信息:资源被解释为脚本,但使用MIME类型text/html传输。但我不知道这是为什么,是因为我试图删除一个图像还是什么。@user3182383这可能是为了你的jquery库。确保它已上载,并且您指向了正确的位置。如果您尝试在浏览器中浏览jquery库,会得到什么?当我这样做时,会得到完整的jquery.js文件作为文本。
function deleteFileAjax(filename) {
    $.ajax(function() {
        type: 'POST',
        url: 'ajax.php',
        data: { filename: $(this).data("file") },
        success: function() {
            alert("File deleted");
        }
    });
}
<button onclick="deleteFileAjax(<?php echo $file ?    >)">
<button onclick="deleteFileAjax('<?php echo $file ?>');">#
<script type="text/javascript" src="/website/libraries/jquery.js">
    function deleteFileAjax(filename) { 
        scriptitem = document.createElement('script');
        scriptitem.type = 'text/javascript';
        scriptitem.src = 'ajax.php?filename=' + filename;
        scriptitem.id = 'ajax';
        document.body.appendChild(scriptitem);
        setTimeout('document.body.removeChild(document.getElementById("ajax"))', 500);
    }

</script>
<script type="text/javascript" src="/website/libraries/jquery.js"></script>

<script type="text/javascript">
    function deleteFileAjax(filename, buttonId) { 
        scriptitem = document.createElement('script');
        scriptitem.type = 'text/javascript';
        scriptitem.src = 'ajax.php?filename=' + filename;
        scriptitem.id = 'ajax';
        document.body.appendChild(scriptitem);
        setTimeout('document.body.removeChild(document.getElementById("ajax"))', 500);
    }
</script>
<button data-file="<?php echo $file ?>" class="delete-btn">Delete</button>
$('.delete-btn').click(function() {
    $.ajax(function() {
        type: 'POST',
        url: 'ajax.php',
        data: { filename: filename },
        success: function(return) {
            if(return == 'SUCCESS') {
                $this = $(this).closest('tr');
                $this.remove();
            }
        }
    });
});
<?php

if (isset($_POST['filename'])) {
  if (unlink(htmlentities("uploads/". $_POST['filename']))) {
  echo "SUCCESS";
  }
}
?>