У тебя закоментирована строка
// 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>