繁体   English   中英

Ajax responseText为空

[英]Ajax responseText is empty

在过去的几天中,我了解了canvas元素,现在我想添加AJAX将canvas保存到服务器。 具体来说,我让用户在画布上绘画,完成后单击按钮,画布便发送并保存到服务器。 下面的代码效果很好。

使用Javascript:

var testCanvas = document.getElementById('imageView');
var canvasData = testCanvas.toDataURL("image/png");
var ajax = new XMLHttpRequest();
ajax.onreadystatechange=callback();
ajax.open("POST",'script.php',true);
ajax.setRequestHeader('Content-Type', 'canvas/upload');
ajax.send("canvasData"+canvasData );
function callback (){alert ('it works!');}

PHP代码:

<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
    // Get the data
    $imageData=$GLOBALS['HTTP_RAW_POST_DATA'];

    $filteredData=substr($imageData, strpos($imageData, ",")+1);

    $unencodedData=base64_decode($filteredData);
    $fp = fopen( 'images/'.uniqid().'.png', 'wb' );
    fwrite( $fp, $unencodedData);
    fclose( $fp );
        echo "saved";
}
  else{

  echo "no raw data";
  }
?>

但是,我希望将文件名和位置返回到脚本,以便可以向用户显示服务器端图像和位置。 我尚未调整php代码,因为使用以下命令会返回一个空字符串:

function callback () { alert (ajax.responseText);}

我进行了搜索,并且似乎已经解决了该主题几次,而导致我无法解决上述问题。

我要去哪里错了?

引用函数,不要调用它们,并等待readyState返回4

var testCanvas = document.getElementById('imageView');
var canvasData = testCanvas.toDataURL("image/png");
var ajax = new XMLHttpRequest();

ajax.onreadystatechange = callback;

ajax.open("POST",'script.php',true);
ajax.setRequestHeader('Content-Type', 'canvas/upload');
ajax.send("canvasData"+canvasData );

function callback (){
    if (ajax.readyState == 4) {
        alert(ajax.responseText);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM