私はユーザープロファイルを持つ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?>')">
愚かなアンドゥ機能は、Webページ(CTRL-Z)上では動作しません。最後のアクションよりも元に戻す。ここで私のテキストを修正していますので、わかりやすいです:今問題:私はonbeforeunloadでAJAXコードを実行しています。ページをアンロードしようとすると、ポップアップボックスにunfinished.php(xmlhttp.responseText;)というメッセージが表示されますが、ボックスは内部のAJAXコードでは起動しません。 –
大きな謎はありません。 '未完了'は何も返さない – Flambino