Enviado em 06/07/2013 - 23:03h
Olá!
Estou tentando enviar um arquivo por Ajax ao PHP, mas ele não recebe dado algum.
Código fonte:
No arquivo de destino (upload.php) eu gero a saída e exibo na textarea da página, mas por algum motivo que desconheço, o script PHP não recebe nenhum dado referente ao arquivo enviado, seja por $_POST ou $_FILES.
Pesquisando por horas, só encontrei soluções com jQuery, mas não tenho a menor pretenção ou vontade utilizar tal framework.
Alguém tem ideia do que fazer?
Desde já, obrigado!
Estou tentando enviar um arquivo por Ajax ao PHP, mas ele não recebe dado algum.
Código fonte:
<!DOCTYPE HTML>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Upload com Ajax</title>
<link rel="stylesheet" href="/templates/css/global.css">
<script>
function upload (file) {
var sfb = document.querySelector('#selectFileButton');
var form = document.forms[0];
var file = document.querySelector('input[type=file]');
var prog = document.createElement('progress');
var fd = new FormData();
var xhr = new XMLHttpRequest();
xhr.open('POST', 'upload.php', true);
form.appendChild(prog);
form.removeChild(sfb);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var url = document.createElement('textarea');
url.innerHTML = xhr.responseText;
form.appendChild(url);
form.removeChild(prog);
}
}
xhr.send(fd);
}
onsubmit = function () {
return false;
}
</script>
</head>
<body>
<form method="POST" enctype="multipart/form-data">
<button type="button" id="selectFileButton" onclick="document.querySelector('input[type=file]').click()">Selecionar arquivo</button>
<input type="file" name="image" onchange="upload(this.files[0])">
</form>
</body>
</html>
No arquivo de destino (upload.php) eu gero a saída e exibo na textarea da página, mas por algum motivo que desconheço, o script PHP não recebe nenhum dado referente ao arquivo enviado, seja por $_POST ou $_FILES.
Pesquisando por horas, só encontrei soluções com jQuery, mas não tenho a menor pretenção ou vontade utilizar tal framework.
Alguém tem ideia do que fazer?
Desde já, obrigado!