首页 新闻 会员 周边

jquery 无法获取 flask 返回的 json

0
悬赏园豆:5 [待解决问题]

方法为 GET ,return 为 jsonify 处理的 json ,直接使用路径访问浏览器可以正常显示 json 内容,方法未添加需要登录的修饰器。flask全局虽然有csrf防护,但是似乎只针对ajax的post才有影响。
但是$.getJSON无法获得响应的json,而x=$.getJSON后x就有responseJSON,这是为啥呢?但是如果把x=$.getJSON;return x.responseJSON写到一个函数里面返回的又是undefined ,问题到底是哪里?

问题补充:

服务器方面针对每次ajax请求,即使没有获取到响应文本,服务器的控制台都是200成功响应了的

p->p.Name的主页 p->p.Name | 初学一级 | 园豆:53
提问于:2019-09-05 21:57
< >
分享
所有回答(2)
0

要不 你试试$.ajax({}) 这种?然后dataType设置为json

Rejiu泡泡糖 | 园豆:632 (小虾三级) | 2019-09-06 14:03

没法 , 问了几个前端 , 他们也没明白为啥 , 尤其是

x = $.getJSON() ; x.responseJSON 是 object
但是 function f(){ var x = $.getJSON; return x.responseJSON; } ; f() ; 这个函数就是 undefined
简直感觉是玄学了啊

支持(0) 反对(0) p->p.Name | 园豆:53 (初学一级) | 2019-09-06 19:04
0

经过查询 stackoverflow 终于注意到了盲点
开发服务器端口并非 80 , 而 getJSON 方法中未指定正确的服务器端口号 , 所以导致了跨域请求 , 最后无奈使用 jsonp 方式解决 , 虽然感觉 jsonp 不够优雅 , 不过暂时想不出其他适合法子了

这个问题在 asp.net mvc 的开发中是没有遇到过的 , 想来应该是 asp.net mvc 的服务器已经在响应中添加了允许跨域的标头 , 而 flask 可能没有做这方面的处理 .

p->p.Name | 园豆:53 (初学一级) | 2019-09-07 09:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册