通过AJAX将canvas.toDataUrl()发送到php

时间:2014-05-10 10:57:43

标签: javascript php ajax html5 canvas

我试图通过AJAX将canvas.toDataUrl()发送到php页面。

这是我的尝试:

JavaScript代码:

function showUser() {
str = "url="+canvas.toDataUrl();

     if (window.XMLHttpRequest) {
             // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
     } else { // code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
       }
    xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
   }
    xmlhttp.open("GET","file.php?"+str,true);
    xmlhttp.send();
}

PHP:

<?php
   $url = $_GET['url'];
   echo "$url";
?> 

上面的代码似乎没有用,虽然我做了完全相同的事情,但改为使用String值,如下所示:

    function showUser() {
str = "url=12345";

     if (window.XMLHttpRequest) {
             // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
     } else { // code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
       }
    xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
   }
    xmlhttp.open("GET","file.php?"+str,true);
    xmlhttp.send();
}

这个工作正常, 但是当我使用canvas.toDataUrl()时它不起作用!为什么呢?

还有另一种方法可以将canvas.toDataUrl()发送到php吗?

由于

2 个答案:

答案 0 :(得分:1)

<强>解决

问题是我试图通过GET发送大数据, 我通过POST发送相同的(大)数据来解决它 POST比GET稍微复杂一点

以下是使用POST通过AJAX发送数据的方法:

http://www.javascriptkit.com/dhtmltutors/ajaxgetpost2.shtml

我使用了链接中的代码,它对我很好 任何有相同问题的人请参考上面的链接并使用POST代替GET

谢谢大家

答案 1 :(得分:0)

我建议尝试使用javascript encodeURIComponent()函数:

str = "url="+encodeURIComponent(canvas.toDataUrl());

问题是,dataurl包含符号&#34; /&#34;所以它可能会被错误地解释。 如果有效,请告诉我。