#javascript #php #web #xmlhttprequest #form-data
Вопрос:
Я пытаюсь отправить запрос XHR на страницу PHP с несколькими параметрами (2 строки, 1 большой двоичный объект), но я не могу получить эти значения в PHP-коде..
вот мой код :
JS
function initRequeteUpdImg(blob, file)
{
img = document.getElementById("id");
img.src = blob;
requeteUdpRec = new XMLHttpRequest();
requeteUdpRec.onreadystatechange = callback_ReqUpdRec;
requeteUdpRec.open("POST","function/Modify_action.php", true);
requeteUdpRec.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
function readFile(event)
{
var fileType = file.type;
blob = blobUtil.arrayBufferToBlob(event.target.result, fileType);
formData = new FormData();
formData.append("id", id);
formData.append("action", "updImg");
formData.append("file", event.target.result);
requeteUdpRec.send(formData);
}
var reader = new FileReader();
reader.addEventListener('load', readFile);
reader.readAsArrayBuffer(file)
}
PHP
if(isset($_POST["action"]) amp;amp; $_POST["action"]=="updImg")`{
$requete = "select eleve_id from eleves where person_id = ?";
$req_args = array($_POST['id']);
$req_type = "i";
$res = mysqli_fetch_array(prepared_query($requete, $req_args, $req_type));
$requete = "update signature SET signature_blob = '".$_POST["file"]."' where eleve_id = ".$res["eleve_id"];
$res = unprepared_query($requete, $req_args, $req_type);
}
else
{
http_response_code (404);
}`
Я, очевидно, делаю что-то не так, но где…?
Я новичок в JS, так что, если бы вы могли подробно рассказать, было бы очень приятно ! Спасибо за вашу помощь !
Редактировать :
Возврат значения var_dump($_POST) :
array(1) {
["------WebKitFormBoundaryKNMixbnGfrQKo4ox
Content-Disposition:_form-data;_name"]=>
string(265) ""id"
8
------WebKitFormBoundaryKNMixbnGfrQKo4ox
Content-Disposition: form-data; name="action"
updImg
------WebKitFormBoundaryKNMixbnGfrQKo4ox
Content-Disposition: form-data; name="file"
[object ArrayBuffer]
------WebKitFormBoundaryKNMixbnGfrQKo4ox--
"
}
Комментарии:
1. Сделайте
var_dump($_POST);
это, чтобы увидеть, что происходит. Также лучше использовать подготовленные инструкции для предотвращения SQL-инъекций.2. Это
blob
большой двоичный объект или URL-адрес большого двоичного объекта? вы используете его и как то, и как другое.3. большой двоичный объект-это большой двоичный объект, я попробую var_dump, когда у меня будет 5 минут, Спасибо за ваш ответ
4. @MarkusZeller да, я удалил подготовленный запрос здесь, чтобы упростить код, я отредактировал сообщение с помощью var_dump($_POST);