Я знаю, что на этот вопрос был дан ответ на этом форуме ( невозможно получить значения в POST php web serivce ), но как вопрос, так и ответ использовали jQuery и, в моем случае, я не могу его использовать (независимо от того, почему) …
Итак, у меня есть файл Javascript, который предназначен для создания «захвата экрана» с помощью функции «toDataURL ()» и отправки его в файл PHP с использованием AJAX. Поскольку данные, которые нужно отправить, действительно длинны, я не могу использовать метод «GET» (AJAX возвращает ошибку 414: «URL TOO LONG»), поэтому мне нужно использовать «POST».
Я следил за некоторыми примерами на простом Javascript (которые отнюдь не легко найти, потому что каждый использует jQuery!: P), и мой код выглядит так:
var dataURL = me.video.getScreenCanvas().toDataURL(); var req = false; try{ req = new XMLHttpRequest(); } catch (e){ // IE try{ req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { // try an older version try{ req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ return false; } } } req.onreadystatechange = function(){ if(req .readyState == 4){ if(req.status == 200) { console.log("RESULT AJAX: "+req.responseText); }else{ console.log("ERROR AJAX: returned status code "+req.status+" "+req.statusText); } } } req.open("POST", "http://www.mywebpage.com/image_upload.php", true); req.setRequestHeader("Content-type","application/x-www-form-urlencoded"); req.send("imgdata="+dataURL);
При попытке зарегистрировать содержимое переменной «dataURL» он регистрирует большую строку, такую как «image / png … blablabla», поэтому я предполагаю, что данные генерируются, как ожидалось.
В этот момент PHP-файл просто пытается получить результат:
<?php $imageData = ''; if(isset($_POST['imgdata'])) { echo "correct POST!"; $imageData = $_POST['imgdata']; }else if(isset($_GET['imgdata'])){ echo "correct GET!"; $imageData = $_GET['imgdata']; } echo "ImgData: ".$imageData; if($imageData != '') { $imageData = str_replace(' ','+',$imageData); $decodedData = base64_decode($imageData); if(file_put_contents('imatge1.jpeg', $decodedData) !== FALSE) { echo "Image has been successfully processed...?"; }else{ echo "Error trying to process the image..."; } } ?>
Тем не менее, PHP-файл не выполняет эхо-сообщения «POST» или «GET», эхо-сообщение «ImgData» возвращается пустым, а сообщение «успех» или «ошибка при обработке изображения» не эхо … Поэтому кажется, что PHP-файл не может получить данные, переданные методом «POST» AJAX.
Что я делаю не так? Как я могу решить эту проблему с помощью простого Javascript ( важно не использовать jQuery )?
Заранее благодарим за ваше время и усилия! 🙂