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

I am trying to send a canvas.toDataUrl() to a php page via AJAX.

Here's is my try:

JavaScript code:

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";
?> 

The code above doesn't seem to be working, although I did the exact same thing but with a String value instead, like the following:

    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();
}

This one works fine, but when I use canvas.toDataUrl() it doesn't work !? why?

Is there another way to send canvas.toDataUrl() to php?

Thanks

dso15221
dso15221 在同一文件夹中的html文件中(我不确定我理解了这个问题)谢谢
6 年多之前 回复
dongyoulou4829
dongyoulou4829 IE8-不支持<canvas>所以你可以从你的代码中删除旧的浏览器位,同样,你在哪里vardxmlhttp和str?
6 年多之前 回复

2个回答



已解决</ strong> </ p>

问题在于我试图发送 通过GET的大数据,
我通过POST发送相同的(大)数据来解决它

POST比GET稍微复杂一点</ p>

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

http://www.javascriptkit.com/dhtmltutors/ ajaxgetpost2.shtml </ p>

我使用了链接中的代码,它与我一起正常工作
任何人有同样的问题请参考上面的链接并使用POST而不是GET </ p>

谢谢大家</ p>
</ div>

展开原文

原文

SOLVED

The problem was that I was trying to send Large data through GET, I solved it by sending the same (large) data through POST POST is a little more complex than GET though

Here's how to send data via AJAX using POST:

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

I used the code in the link and it works fine with me anyone having the same problem please refer the link above and use POST instead of GET

Thanks everybody



我建议尝试使用这样的javascript encodeURIComponent()函数:</ p>

  str =  “url =”+ encodeURIComponent(canvas.toDataUrl()); 
</ code> </ pre>

事实是,dataurl包含像“/”这样的符号,因此可能会被错误地解释。

让我知道这是否有效。</ p>
</ div>

展开原文

原文

I reccommend trying the javascript encodeURIComponent() function like this:

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

The thing is, that dataurl contains symbols like "/" so it might get falsely interpreted. Let me know if that works.

dongliu0823
dongliu0823 实际上,由于该方法在一个映像上成功而在另一个映像上失败,因此可能会发生CORS安全违规。
6 年多之前 回复
douwu8060
douwu8060 我刚刚意识到了什么。 你可以检查一下:stackoverflow.com/questions/2390232 / ... 如果图形不基于相同的域,则可能引发错误。 虽然看起来不太可能。
6 年多之前 回复
down101102
down101102 这确实很奇怪。 我无法从头脑中想到任何可能的推理。 很高兴你让它至少为一些图像工作。
6 年多之前 回复
dscpg80066
dscpg80066 我只是尝试选择另一个画布(即在画布上绘制另一个图像),它工作正常! 问题是它不想要某个图像。 为什么!? 真奇怪
6 年多之前 回复
dongqin1819
dongqin1819 我刚尝试过,但我不确定它是做什么的。 alert(canvas.toDataUrl())工作正常并输出一个带有url的警告框,但它不会发送到php文件! 谢谢
6 年多之前 回复
doushi2047
doushi2047 你能试试console.log(canvas.toDataUrl()); 只是为了检查是否有任何东西来自那里。 如果没有,您的变量画布可能有问题,这超出了此功能的范围。
6 年多之前 回复
dongtan8532
dongtan8532 仍然没有工作,谢谢
6 年多之前 回复
doubei5114
doubei5114 /之后不会被错误地解释? 因为你现在正在搜索中
6 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问