baijunjie / PhotoClip.js

一款手势驱动的裁图插件 / A gesture to drive image cropping plug-in
MIT License
638 stars 216 forks source link

图片存在跨域问题 #48

Closed wjryours closed 7 years ago

wjryours commented 7 years ago

var pc = new PhotoClip('#clipArea',{ size: [230,310], outputSize: 375, lrzOption:{quality:0.9}, file: '#picture', ok: '#clipBtn', loadStart: function() { console.log('开始读取照片'); }, loadComplete: function() { console.log('照片读取完成'); },done: function(dataURL) { var url=“xxxxx.xxxxx.xxx” $.ajax({ url: url, type: 'post', data: {base64_string: dataURL}, dataType: 'json', timeout: 200000, success: function (response) { $.hideIndicator(); console.log(response) if (response.code ===0) { $("#input_picture_url").val(response.data.url) $("#Myimg").attr("src",response.data.url); $.toast("图片上传成功"); $("#pop_photoclip").hide(); return true; } else { $("#pop_photoclip").hide(); return alert(response.reason); } }, error: function (jqXHR, textStatus, errorThrown) { if (textStatus == 'timeout') { $.toast("请求超时"); return false; } $.toast(jqXHR.responseText); alert(jqXHR.responseText); $("#pop_photoclip").hide(); } }); }, fail: function(msg) { console.log("122") alert(msg); } 直接跳过了done直接在fail这报图片文件存在跨域问题,请问这是什么问题?

baijunjie commented 7 years ago

图片必须与应用源,或者必须是file控件选取的图片

pentakill666 commented 7 years ago

同样的问题,图片已经截取成功,但是只要对dataURL进行操作(赋值给其他变量,或者发送到后台,都会报跨域问题,其实也是input的选的,不是跨域)

baijunjie commented 7 years ago

提示的错误是什么?方便截个图给我

pentakill666 commented 7 years ago

error

pentakill666 commented 7 years ago

源码中的try和catch都执行了,可能是try中的if判断造成的,这个图确实使用input选的,不是加载其它URL地址图片

wjryours commented 7 years ago

我建议你可以仔细看下done:function(){}里面的函数,我当时碰到这个问题一直以为是服务器跨域的问题,最后发现是done里面的函数写错了,就直接报跨域的错误,报跨域错不一定是跨域的问题,你可以仔细看下函数,或者你可以直接去源码里把那个跨域的错误信息打印出来,看看是什么问题

pentakill666 commented 7 years ago

确实是这个问题,但是这个报错可以修改一下

baijunjie commented 7 years ago

嗯,只要在你的处理函数中catch到错误,就不会被done 的catch捕获到,也就不会报这个了