使用php重命名文件时出现Ajax错误,仍然会被重命名
我试图通过我的Web服务器(RasPi)上的网站重命名文件。这一切都通过jqueryajax请求完成,并且可以正常工作。文件已成功重命名,但由于某些原因,我的浏览器控制台出现错误 当我尝试从pi上的webbrowser重命名文件时,它可以正常工作,不会出现任何错误 JS部分使用php重命名文件时出现Ajax错误,仍然会被重命名,php,jquery,ajax,rename,Php,Jquery,Ajax,Rename,我试图通过我的Web服务器(RasPi)上的网站重命名文件。这一切都通过jqueryajax请求完成,并且可以正常工作。文件已成功重命名,但由于某些原因,我的浏览器控制台出现错误 当我尝试从pi上的webbrowser重命名文件时,它可以正常工作,不会出现任何错误 JS部分 $.ajax({ url: 'rsrc/php/filemanager.php', type: 'get', data: {'action': 'renameFile', 'path': $folderpath, 'oldf
$.ajax({
url: 'rsrc/php/filemanager.php',
type: 'get',
data: {'action': 'renameFile', 'path': $folderpath, 'oldfilename': $oldfilename, 'newfilename': $newfilename},
success: function(answer) {
console.log(answer);
if(answer == "OK") {
location.reload();
}
},
error: function(xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError: " + err);
}
});
PHP
很抱歉这里的格式不好。即使我只是打印出路径并手动使用mv,它也可以正常工作。当我使用exec时,仍然会出现相同的错误。你知道这是什么原因吗?到目前为止,我在Chrome和Firefox上试用过它我可以在你的
xhr
对象上看到一个readyState:0
。零代码表示请求未初始化。您可以看到更多:@matze无法获得更复杂的嗡嗡声?如果请求已发送,并且最终结果和http代码已发送,您是否可以查看开发人员工具上的“网络”选项卡?@MarcosPérezGude其状态标记为“已取消”,大小也为0。它没有得到任何回应。如果我尝试直接访问php文件filemanager.php?action=renameFile&path=%2F&oldfilename=hello.jpg&newfilename=new.jpg
,它工作正常并返回ok,顺便说一句:我还获得了一个删除文件的函数,它可以正常工作。ajax请求基本上是相同的
if ($_GET['action'] == 'renameFile') {
$subfolderPath = $_GET['path'];
$oldfilename = $_GET['oldfilename'];
$newfilename = $_GET['newfilename'];
$preview_oldfilename = substr($oldfilename, 0, strrpos($oldfilename, ".")) . ".jpg";
$preview_newfilename = substr($newfilename, 0, strrpos($newfilename, ".")) . ".jpg";
$renameOldPath = $uploadfolder . $subfolderPath . $oldfilename;
$renameNewPath = $uploadfolder . $subfolderPath . $newfilename;
$renamePreviewOldPath = $uploadpreviewfolder . $subfolderPath . $preview_oldfilename;
$renamePreviewNewPath = $uploadpreviewfolder . $subfolderPath . $preview_newfilename;
echo $renameOldPath;
//To be revisited: Empty Error
$firstRename = rename($renameOldPath, $renameNewPath);
$secondRename = rename($renamePreviewOldPath, $renamePreviewNewPath);
if($firstRename == true && $secondRename == true) {
echo "OK";
} else {
echo "NO";
}
}