Onbeforeunload - окно popux не будет отображаться или запускаться - PullRequest
0 голосов
/ 19 февраля 2012

Я создаю сайт с профилями пользователей.Я нахожусь в части картины в данный момент.Когда человек загружает свое изображение без проблем, изображение будет храниться в 4 разных папках.Один для размера 25, 100, 150 и нормального размера.После этого они будут перенаправлены на ту же страницу с новым контентом.Это та часть, где им нужно обрезать свою картинку.Часть урожая работает отлично, но у меня есть проблема.Когда они покидают сайт без обрезки, только что загруженные файлы сохраняются в папках, а это не то, что мне нужно.Поэтому я проверю несколько проверок с помощью 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?>')">

1 Ответ

0 голосов
/ 20 февраля 2012

Решил сам. Сделал так:

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;
}
}

Но теперь у меня есть другая проблема ... 1-я из всех функций выгрузки работает отлично, но я не хочу, чтобы она срабатывала при нажатии кнопки "Сохранить обрезку". Есть идеи как это сделать?

Кнопка сохранения html:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...