[英]Jquery Ajax & PHP unlink
我在使用jQuery運行刪除文件的AJAX請求時遇到了麻煩:
function deleteuploadedfile(filetodelete) {
$imagefile = 'http://domain.co.uk/directory/uploads/'+filetodelete;
alert($imagefile);
$.ajax({
type: 'POST',
data: {
action: 'deleteimage',
imagefile: $imagefile,
},
url: 'http://domain.co.uk/directory/delete.php',
success: function(){
alert('success');
}
})
}
THE PHP FILE
<?php
if($_POST["action"]=="deleteimage")
{
$imagefile = $_POST['imagefile'];
$imagefileend = '/uploads/'.end(explode('images',$imagefile));
unlink($_POST['imagefile']);
}
?>
我收到警報“成功”,但文件未從服務器中刪除。
到目前為止,我只需要一些有關發生的事情以及為什么不刪除文件的指導。
在您的PHP代碼中,您正在執行以下操作:
unlink($_POST['imagefile']);
$ _POST ['imagefile']來自您的Ajax調用,並在javascript中設置為:
$imagefile = 'http://domain.co.uk/directory/uploads/'+filetodelete;
$.ajax({type: 'POST',
data: {
action: 'deleteimage',
imagefile: $imagefile,
}
您如何期望PHP能夠刪除遠程URL?
您似乎正在使用本地路徑設置$ imagefileend變量,但是您並未在unlink()調用中使用它。 仔細檢查您要取消鏈接的內容,在嘗試取消鏈接之前直接吐出完整路徑,並確認它在本地存在並且您具有適當的權限。
同樣,unlink()根據成功返回true或false。 捕獲並使用它來幫助調試。
建議的編輯(未試用):
if($_POST["action"]=="deleteimage")
{
$imagefile = basename($_POST['imagefile']); // See http://php.net/basename
$path = '/uploads/'. $imagefile;
if(!file_exists($path)) {
echo json_encode(array("success" => 0, "error" => "File $imagefile does not exist"));
exit;
}
if(!unlink($path)) {
echo json_encode(array("success" => 0, "error" => "File could not be deleted, check permissions"));
exit;
}
echo json_encode(array("success" => 1));
}
然后在ajax函數客戶端進行回調,檢查服務器響應,並確保成功= 1。
success: function(data){
var response = $.parseJSON(data);
if(!response.success) {
alert(response.error);
} else {
alert("success!");
}
}
另外,我建議您使用Chrome(或Firefox)並觀看“開發人員工具”的“網絡”標簽,以便您可以准確地看到服務器從ajax調用返回的內容。
由於PHP腳本本身已定位並且請求已完成,因此您將獲得成功 。 要讓Java腳本代碼知道PHP腳本出了點問題,您需要做的就是返回某種錯誤代碼,供Java腳本讀取並采取措施。
關於您的PHP腳本,您嘗試取消鏈接 $ _POST ['imagefile']這是一個URL。 這將不能很好地工作。 您應將網絡服務器上的本地路徑傳遞到要刪除的文件。
然后將一些代碼返回到Java腳本前端,指示刪除該文件成功或失敗並通知用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.