为什么用原生的ajax传过去的base64码无法生成成功图片?

fonglezen 2015-06-10 05:11:42
使用HTML5的file api上传图片,并获取到了图片base64编码,然后通过ajax post这串编码过去,保存图片到指定目录中去,可是用jq的ajax成功生成图片,但是用原生的却不行,问题在那儿呢?

原生的ajax:
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('post','todo.php',true);
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=utf-8');
xmlhttp.setRequestHeader('X_Requested-With','XMLHttpRequest');
xmlhttp.send('dataurl='+dataurl);

xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
console.log(xmlhttp.responseText)
//alert(xmlhttp.responseText);
//window.location.href = window.location.href + xmlhttp.responseText;
}
}


jq的ajax:
$.ajax({
url:'todo.php',
type:'post',
data:{dataurl:dataurl},
success:function(data){
console.log(data);
//alert(data);
//window.location.href = window.location.href + data;
}
});


完整的代码存放在了:
http://pan.baidu.com/s/1kT05bzp
...全文
608 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fonglezen 2015-06-12
  • 打赏
  • 举报
回复
引用 3 楼 xzy21com 的回复:
jq能成功说明你的程序是好的。但原生js不行肯定是你的js问题,很明显的就是变量没有经过编码直接post过去生成的。 xmlhttp.send('dataurl='+dataurl); 改成: xmlhttp.send('dataurl='+encodeURIComponent(dataurl));
的确如此!谢谢!
scscms太阳光 2015-06-11
  • 打赏
  • 举报
回复
jq能成功说明你的程序是好的。但原生js不行肯定是你的js问题,很明显的就是变量没有经过编码直接post过去生成的。 xmlhttp.send('dataurl='+dataurl); 改成: xmlhttp.send('dataurl='+encodeURIComponent(dataurl));
Go 旅城通票 2015-06-11
  • 打赏
  • 举报
回复
php可以解码客户端base64编码的图片内容 php读取和保存base64编码的图片内容:http://my.oschina.net/fxhover/blog/209277 php基于base64解码图片与加密图片还原实例:http://www.jb51.net/article/57052.htm http://www.douban.com/note/322064487/
slwsss 2015-06-11
  • 打赏
  • 举报
回复
编码下

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧