我知道这个问题在这个论坛中得到了回答(Unable to get values in POST php web serivce),但是问题和答案都使用了 jQuery,就我而言,我不能使用它(不管为什么) ...
因此,我有一个 Javascript 文件,旨在制作画布的“屏幕捕获”(使用“toDataURL()”函数)并使用 AJAX 将其发送到 PHP 文件。由于要发送的数据很长,不能使用“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 文件无法检索AJAX 的“POST”方法传递的数据。
我究竟做错了什么?我怎么能只使用普通的 Javascript来解决这个问题(不使用 jQuery 很重要)?
提前感谢您的时间和精力!:)