Javascript 单击后,未定义删除
我的代码有问题,但我找不到为什么它不工作 我正在用AJAX创建一个文件删除链接 我知道我的删除页面正在工作,但是我的javascript没有去删除文件 这是我代码的一部分 formatoverzicht.phpJavascript 单击后,未定义删除,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
<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";
}
}
?>