littleguga
@littleguga
Не стыдно не знать, а стыдно не интересоваться.

Как узнать, что за запрос?

Загружаю 2 файла через xmlHttpRequest, в событие onload, как узнать какой файл загрузился в момент данного события?

var request = new XMLHttpRequest();

request.onload = function() {
  if (request.status >= 200 && request.status < 400) {
    // Success!
    if(//тут какое то условие){
        Alert("загрузили 1.txt");
    }else{
        alert("загрузили 2.txt");
    }
 //   var data = JSON.parse(request.responseText);
  } else {
    // We reached our target server, but it returned an error
  }
};

request.open('GET', '1.txt', true);
request.send();

request.open('GET', '2.txt', true);
request.send();


Заранее благодарен за ответ!
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
copist
@copist
Empower people to give
У тебя закоментирована строка

// var data = JSON.parse(request.responseText);

Вот в этом request.responseText с сервера надо передавать, что именно там произошло. Например, в формате JSON можно вернуть имя файла, URL для просмотра файла, URL для его скачивания
(формат ответа я придумал из головы - он полностью на твоё усмотрение)
{
  "file": "text1.txt",
  "view_url": "http://domain.com/path/to/file/text1.txt",
  "download_url": "http://domain.com/path/to/file/text1.txt?download"
}

на стороне сервера на PHP такой ответ мог бы быть сформирован вот так:
<?php
/* что-то сделать с принятым файлом */

/* выдать ответ через AJAX */
echo json_encode(array(
    "file" => "text1.txt",
    "view_url" => "http://domain.com/path/to/file/text1.txt"
    "download_url" => "http://domain.com/path/to/file/text1.txt?download",
));


Ещё можно воспользоваться замыканиями, как подсказал planarik :

<script type="text/javascript">
function loadFile(fileUrl, callback)
{
    var request = new XMLHttpRequest();

    request.onload = function() {
        if (request.status >= 200 && request.status < 400) {
            // fileUrlбурётся через замыкание, а request.responseText из ответа сервера
            callback(fileUrl, request.responseText);
        } else {
            alert('Error');
            // We reached our target server, but it returned an error
        }
    };

    request.open('GET', fileUrl, true);
    request.send();
}

loadFile('1.txt', function(fileUrl, reponseText) {
    alert('Загружен файл :' + fileUrl);
    //   var data = JSON.parse(request.responseText);
});  
</script>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@BEaStia
AS3/RoR разработчик
Можешь еще Charles Web Proxy поставить, там все запросы с компьютера логируются.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы