ajaxupload 跨域上传文件 ,能返回值,但是总是进error,不进sucess ,为什么?

$.ajaxFileUpload({

        url:"http://192.168.0.222:8080/Erp_V0.1/admin/upload/uploader.php",   //处理图片的脚本路径
        type: 'post',       //提交的方式
        data: upload_arr,//自定义参数
        secureuri :false,   //是否启用安全提交
        fileElementId :id,     //file控件ID
        dataType : "jsonp",//数据类型为jsonp
        jsonp: "jsonpCallback",//服务端用于接收callback调用的function名的参数
        success : function (data){  //提交成功后自动执行的处理函数
            alert(1111);
            alert(data);
        },
        error:function(data,status,e){
            alert(2222);
            alert(e);
            alert(JSON.stringify(data));
            alert(status);
        }
    }) 
阅读 6.8k
3 个回答

jsonp跨域只支持get方式,就算你前端这里设置成post方式,也会自动转换成get方式。
jsonp的实现方式其实就是<script>脚本请求地址的方式一样,只是ajax的jsonp对其做了封装,可想而知,jsonp是不支持POST方式的。因此,你服务器端代码如果用post方式是请求不了的。
当然了,如果你强行要用post方式跨域,也不是没有办法。
客户端更改:
``
添加:crossDomain: true
修改:dataType: "json"
``
服务端添加:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Max-Age: 1000');

虽然可以做到,但有缺点,请求时间比较长,你自己衡量一下利弊吧。

最后附上一个Stackoverflow的相关问题贴:
http://stackoverflow.com/ques...

先去捋清除跨域,jsonp相关的知识吧
jsonp是用的script标签做的
如果post要跨域需要后端添加Access-Control-Allow-Origin

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题