js跨域请求

后端json格式化如下
{"code":"100","msg":"\u7b7e\u540d\u9519\u8bef\uff01","data":[]}
不是callback({"code":"100","msg":"\u7b7e\u540d\u9519\u8bef\uff01","data":[]})
前端真么跨域请求才能顺利取到json
阅读 4.9k
7 个回答

前端无法处理的,让后端解决吧
解决跨域的问题思路
1.赋值法var data=...,用script标签引入获得全局变量
2.json地址和页面地址同源
3.设置cors
4.返回jsonp格式 比如输出 callback(data)..

解析jsonp或者后端设置CORS,后者比较好使,只需要加header属性

jsonp应该只能适合get方式请求数据吧 还是用cors吧

跨域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){

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