2012-02-19 13 views
0

私はユーザープロファイルを持つWebサイトを構築しています。私は現時点で絵の部分にいる。人が問題なく画像をアップロードすると、画像は4つの異なるフォルダに保存されます。 1つはサイズ25,100,150および通常のサイズです。その後、新しいコンテンツで同じページにリダイレクトされます。これが彼らの絵を刈り取る必要がある部分です。作物の部分は素晴らしいですが、私は問題があります。彼らが切り取らずにサイトを離れるとき、彼らがアップロードしたpcitureはまだフォルダに保存されていますが、それは私が望むものではありません。だから私はAJAXでいくつかの小切手を仲介し、それはすでにsotred 4つのファイルのリンクを解除します。私が問題にしているのは、サイトを離れるときにのみ起こるということです(onbeforeunload。) これはIEではうまく動作しますが、Chromeではうまく動作しません。(まだ2台のブラウザしかテストしていません)Onbeforeunload - popuxボックスが表示されない、または起動しない

私がやっている:上記

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(); 

}

機能は、クエリ文字列で "unfinished.php/UNCL" から情報を取得します。そしてそれはすべてうまくいく。 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は問題withpout画像を削除します。私はすでにそれをテストしました。今、私の問題: 私は、コードは、この内部で実行されなければならない

によって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」(または何らかのテキスト)を追加するとHelloworldが返されます!またはe.returnValue = 'Hello world!';、xmlhttp.responseText値の代わりに、ポップアップしてメッセージを表示します。しかし、未完了()関数を実行しないため、xmlhttp.responseTextは表示されません。

どのように私はユーザーがページを去るときに私はAJAXを実行することができますか? それはここに役立ちますHTMLコードの場合:

if($_POST['where'] == "newalbum"){ 
$nameonalbum = $_POST['nameonalbum']; 
}else{ 
$nameonalbum = $_POST['existingalbum']; 
} 
$filenamenew=time().'.gif'; 
?> 
<body onload="warn('<?=$nameonalbum?>','<?=$filenamenew?>')"> 
+0

愚かなアンドゥ機能は、Webページ(CTRL-Z)上では動作しません。最後のアクションよりも元に戻す。ここで私のテキストを修正していますので、わかりやすいです:今問題:私はonbeforeunloadでAJAXコードを実行しています。ページをアンロードしようとすると、ポップアップボックスにunfinished.php(xmlhttp.responseText;)というメッセージが表示されますが、ボックスは内部のAJAXコードでは起動しません。 –

+0

大きな謎はありません。 '未完了'は何も返さない – Flambino

答えて

0

は自分でそれを解決しました。このようDID:

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:

+0

関連する問題