后端json格式化如下{"code":"100","msg":"\u7b7e\u540d\u9519\u8bef\uff01","data":[]}不是callback({"code":"100","msg":"\u7b7e\u540d\u9519\u8bef\uff01","data":[]})前端真么跨域请求才能顺利取到json
前端无法处理的,让后端解决吧
解决跨域的问题思路
1.赋值法vardata=...,用script标签引入获得全局变量
2.json地址和页面地址同源
3.设置cors
4.返回jsonp格式比如输出callback(data)..
解析jsonp或者后端设置CORS,后者比较好使,只需要加header属性
CORS
jsonp应该只能适合get方式请求数据吧还是用cors吧
设置cors吧,后端只需要在头部中添加一行Access-Control-Allow-Origin就可以解决这个问题
跨域Ajax首选的是jsonp。如果后端给定的只是一个字面量形式的数据,前端是不能解析的,只能通过后端程序进行二次加工后才能解析。so,题主的{**}这样的字面量形式如果返回给前端处理只能说明一下两个问题:
后端偷懒了,并没有加工数据
后端故意刁难前端
所以,祝题主好运了
一般跨域有两种方法JSONP和CORS。
如果不需要兼容旧浏览器(IE8以下),建议用CORS,因为这样才能用GET以外的方法,而且不会有XSS(跨站脚本攻击)的风险。
CORS需要在服务器上配置,不同服务器的配置方法不同。
如果要兼容IE8-9,还需在页面使用XDomainRequest对象。
后端应该返回jsonp,即json数据包上一层callback函数
比如callback({"code":"100","msg":"u7b7eu540du9519u8befuff01","data":[]})
ajax:
$.ajax({type:"GET",data:{opid:id,u:u},url:window.VotePostAjax,dataType:"jsonp",jsonp:'callback',jsonpCallback:"jsonpCallback",success:function(data){},error:function(err){}})