gpt4 book ai didi

Jquery ajax json 获取由 Flask Web 框架传递的调用 - 调用失败

转载 作者:行者123 更新时间:2023-12-03 17:36:45 24 4
gpt4 key购买 nike

我正在尝试一个简单的 jquery ajax 调用来获取 json 数据。但是,通话失败,我不能很好地理解为什么。

代码如下。对我来说,这似乎没问题。

$(document).ready(function() {

function onDataReceived (data){
alert('test');
};

$("button").click(function(){
$.ajax({
url: "/test",
type: "GET",
dataType: "jsonp",
success: onDataReceived
});
});
});

编辑 flask 使用

这里的问题是我正在使用 Flask 并返回一个 json 对象。但是,一旦您尝试使用 jquery 进行 ajax 调用,返回纯 json 会产生跨域冲突。因此,如果您从 flask View 输出 jsonp 会容易得多。为此,您可以使用下面的代码段(来自此处: http://flask.pocoo.org/snippets/79/)。 javascript部分可以引用上面的,我只是把dataType从json改成了jsonp。
import json
from functools import wraps
from flask import redirect, request, current_app

def support_jsonp(f):
"""Wraps JSONified output for JSONP"""
@wraps(f)
def decorated_function(*args, **kwargs):
callback = request.args.get('callback', False)
if callback:
content = str(callback) + '(' + str(f().data) + ')'
return current_app.response_class(content, mimetype='application/json')
else:
return f(*args, **kwargs)
return decorated_function

# then in your view
@default.route('/test', methods=['GET'])
@support_jsonp
def test():
return jsonify({"foo":"bar"})

我不确定是否有办法使用 flask 中的直接 json,可能有。但是,由于 jsonp 也更安全,所以我认为最好还是这样做。

最佳答案

这不起作用,因为远程脚本返回 JSON,而不是 JSONP。为了能够执行跨域 AJAX 调用,远程服务器需要支持 CORS 或 JSONP。联系您尝试使用的远程 API 的作者,或阅读文档以了解它是否支持它。

您指定 dataType: "jsonp" 的事实在您的请求中使 jQuery 发送 callback远程域的查询字符串参数,期望它将响应包装在其中。如果不支持,则远程域不支持 JSONP,或者回调参数的调用方式不同。

关于Jquery ajax json 获取由 Flask Web 框架传递的调用 - 调用失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16134164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com