方法为 GET ,return 为 jsonify 处理的 json ,直接使用路径访问浏览器可以正常显示 json 内容,方法未添加需要登录的修饰器。flask全局虽然有csrf防护,但是似乎只针对ajax的post才有影响。
但是$.getJSON无法获得响应的json,而x=$.getJSON后x就有responseJSON,这是为啥呢?但是如果把x=$.getJSON;return x.responseJSON写到一个函数里面返回的又是undefined ,问题到底是哪里?
服务器方面针对每次ajax请求,即使没有获取到响应文本,服务器的控制台都是200成功响应了的
要不 你试试$.ajax({}) 这种?然后dataType设置为json
没法 , 问了几个前端 , 他们也没明白为啥 , 尤其是
x = $.getJSON() ; x.responseJSON 是 object
但是 function f(){ var x = $.getJSON; return x.responseJSON; } ; f() ; 这个函数就是 undefined
简直感觉是玄学了啊
经过查询 stackoverflow 终于注意到了盲点
开发服务器端口并非 80 , 而 getJSON 方法中未指定正确的服务器端口号 , 所以导致了跨域请求 , 最后无奈使用 jsonp 方式解决 , 虽然感觉 jsonp 不够优雅 , 不过暂时想不出其他适合法子了
这个问题在 asp.net mvc 的开发中是没有遇到过的 , 想来应该是 asp.net mvc 的服务器已经在响应中添加了允许跨域的标头 , 而 flask 可能没有做这方面的处理 .