我正在建立一个包含用户个人资料的网站。我现在处于照片部分。当一个人没有问题上传他们的图像时,图片将存储在4个不同的文件夹中。一个尺寸为25,100,150和正常尺寸。在此之后,他们将被重定向到具有新内容的同一页面。这是他们需要裁剪图片的部分。作物部分效果很好,但我遇到了问题。当他们离开网站而没有裁剪时,他们刚刚上传的pciture仍然存储在文件夹中,这不是我想要的。所以我与AJAX交配了一些检查,它将取消已连接的4个文件的链接。我的问题是,这只会在他们离开网站时发生(onbeforeunload。) 这在IE中非常有用,但在Chrome中却不行。(我只测试了两种浏览器。)
以下是我正在做的事情:
function unfinished(album,img){
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
return xmlhttp.responseText;
}
}
xmlhttp.open("GET","incl/unfinished.php?a=" + album + "&i=" + img,true);
xmlhttp.send();
}
上面的函数通过查询字符串从“uncl / unfinished.php”获取信息。这一切都运作良好。
unfinished.php上的代码:
session_start();
require('../dbconnect.php');
$sql = "SELECT * FROM users WHERE username='".$_SESSION['username']."'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
$username= $row['brugernavn'];
}
$album = $_GET['a'];
$img = $_GET['i'];
$sourcex = "../users/".$username."/images/".$album."/x-x/".$img;
$source25 = "../users/".$username."/images/".$album."/25/".$img;
$source100 = "../users/".$username."/images/".$album."/100/".$img;
$source150 = "../users/".$username."/images/".$album."/150/".$img;
if(unlink($sourcex)){
}
if(unlink($source25)){
}
if(unlink($source100)){
}
if(unlink($source150)){
}
echo "Error 908. The picture didn't get cropped, and neither saved. Try again.";
AJAX代码和unfinished.php删除任何问题的图像。我已经测试过了。现在我的问题: 我正在通过
运行AJAX代码代码应该在这里运行:
//function warn(album,img){
window.onbeforeunload = function (e) {
e = e || window.event;
// For IE and Firefox prior to version 4
if (e) {
e.returnValue = unfinished(album,img);
}
// For Safari
return unfinished(album,img);
};
//}
但是当我尝试返回xmlhttp.responseText时,弹出框没有弹出,我无法看到响应。 但是,如果我将“Hello world”(或某些文字)添加到返回中,例如 return Helloworld!'; 或 e.returnValue ='Hello world!'; , xmlhttp.responseText值,弹出,并显示消息。但它不显示xmlhttp.responseText,因为它不运行 unfinished()函数。
任何解决方案当用户离开页面时我如何运行AJAX? 如果它有帮助,这里是HTML代码:
if($_POST['where'] == "newalbum"){
$nameonalbum = $_POST['nameonalbum'];
}else{
$nameonalbum = $_POST['existingalbum'];
}
$filenamenew=time().'.gif';
?>
<body onload="warn('<?=$nameonalbum?>','<?=$filenamenew?>')">
答案 0 :(得分:0)
我自己解决了。是这样的:
function unfinished(album,img){
window.onbeforeunload = function (e) {
e = e || window.event;
var response = '';
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
response = xmlhttp.responseText;
}
}
xmlhttp.open("GET","incl/unfinished.php?a=" + album + "&i=" + img,true);
xmlhttp.send();
// For IE and Firefox prior to version 4
if (e) {
e.returnValue = response;
}
// For Safari
return response;
}
}
但现在我还有另外一个问题......首先卸载功能的效果很好,但我不希望它在单击“保存裁剪”按钮时触发。任何想法如何做到这一点?
保存按钮html: