#javascript #php #html #ajax
#javascript #php #HTML #ajax
Вопрос:
Мне нужна помощь с моим проектом, я должен создать зону перетаскивания, и, когда изображение будет удалено, оно должно быть сохранено на сервере (через PHP, что мне удалось), но также появиться в HTML благодаря ответу от AJAX через PHP. Я больше не знаю, что делать, вот несколько ошибок в коде. Каждый раз, когда я вижу предупреждение JS, объявляется: «Создается исключение: не определено». Я не использую Jquery или что-то еще, это просто ванильный PHP и Javascript, спасибо за вашу помощь
Извините за мой плохой английский, я француз 🙂
мой код :
<body onload="init()" >
<div id="drop_file_zone" ondrop="upload_file(event)" ondragover="return false">
<div id="drag_upload_file">
<p>Drop file here</p>
<p>or</p>
<p><input type="button" value="Select File" onclick="file_explorer();"></p>
<input type="file" id="selectfile">
</div>
</div> <br>
<img id = "imageSource" src="uploads/"/>
<script type="text/javascript">
var fileobj;
var url = "ajax.php";
function upload_file(event) {
event.preventDefault();
var target = document.getElementById ("drop_file_zone");
for (var i = 0; i < 1; i ) {
var fileobj = event.dataTransfer.files[i];
ajax_file_upload(fileobj);
}}
function file_explorer() {
document.getElementById('selectfile').click();
document.getElementById('selectfile').onchange = function() {
fileobj = document.getElementById('selectfile').files[0];
ajax_file_upload(fileobj);
};
}
function init() {
request = new XMLHttpRequest();
var x = document.getElementById("imageSource");
}
function prepareData() {
let url = "ajax.php";
makeRequest( url, fileobj );
}
function ajax_file_upload(file_obj) {
request.onreadystatechange = alertContents;
var formData = new FormData();
formData.append('file', file_obj);
request.open('POST', url)
request.send(formData)
}
function alertContents() {
try {
if (request.readyState === XMLHttpRequest.DONE) {
if (request.status === 200) {
var reponse = JSON.parse( request.reponseText);
x.setAttribute("src", 'uploads' reponse.text);
//document.getElementById("imageSource").src = reponse.text;
} else {
alert("Un problème est survenu au cours de la requête.");
}
}
}
catch( e ) {
alert("Une exception s’est produite : " event.description);
}
}
</script>
</body>
</html>
И мой PHP
<?php
move_uploaded_file($_FILES[‘file’][‘tmp_name’], ‘загружает /’. $_FILES[‘файл’][‘имя’]);
$test = ‘{ «text»:»uploads/’.$_FILES[‘file’][‘name’].'»}’; echo $_FILES[‘file’][‘name’] ;
Комментарии:
1. Что такое
request
? Не используйте глобальные переменные.2. запрос = новый XMLHttpRequest();
3. Конечно, внутри
init()
функции этоXMLHttpRequest
. Но не где-либо еще. Переменные должны передаваться из функции в функцию. Если вы хотите полагаться на глобальные переменные, чего делать не следует, вам необходимо создать их в глобальной области видимости перед их использованием.