javascript - 使用 AJAX 调用 Flask API

标签 javascript jquery python ajax openshift

我正在试验 Flask 和 AJAX,我有一个简单的 API 路由 here ,托管在 OpenShift。我想使用 Ajax 在 Javascript 文件中调用 API。 OpenShift Python 文件很简单:

from flask import Flask
app = Flask(__name__)

import json

@app.route('/hello/<name>')
def hello_world(name=None):
    str = {'key':'Hello World!', 'q':name}
    #out = {'key':str}
    res = json.dumps(str)
    return res

if __name__ == '__main__':
    app.run()

这是 Ajax 调用:

$.ajax({
    type:"GET",
    dataType: "json",
    data:'Payam',
    url: "http://mypythonapp-spacepirate.rhcloud.com/hello/",
    success: function(data){
        buf1=data;
        console.log(data);
    }
})

但这调用了导致 404 的 url。我该如何解决这个问题?仅提及 CORS 就不是问题。

http://mypythonapp-spacepirate.rhcloud.com/hello/?Payam

最佳答案

尝试将您的 url 属性更改为

url: "http://mypythonapp-spacepirate.rhcloud.com/hello/world",

然后你会得到一个 200 的响应状态,而不是 404。原因是你创建的 flask 路由在 hello/之后有一个必需的参数。

编辑:跟进关于对数据使用变量的问题

  • 方法一:在url中添加encode参数

    url: "http://mypythonapp-spacepirate.rhcloud.com/hello/" + encodeURIComponent(xyz)

  • 方法 2:使用 data ajax 调用的参数,因为您已经开始这样做了。我认为 jquery 会将其转换为 get 的 URL 查询字符串, 像这样。注意 ?分隔查询字符串的开头:

    http://mypythonapp-spacepirate.rhcloud.com/hello/?xyz

    您可以通过检查您的浏览器开发工具并查看 ajax 调用实际请求的 URL 来验证这一点。另请注意,在 flask 处理程序中,您随后需要检查 request.query_string 以获取数据,因为 <name>参数将为空。

关于javascript - 使用 AJAX 调用 Flask API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41191631/

相关文章:

javascript - 将 mootools 代码转换为 jquery

javascript - 如何在django中刷新图表而不刷新整个页面

asp.net - 从通过 __doPostBack() 完成的页面中使用 Python 的 urllib 检索信息?

jquery-mmenu : prevent close on click

python - python中是否有检测曲线上奇异点的函数?

python - 如何通过请求库获取重定向的 URL 或其内容?

python - matplotlib/seaborn : first and last row cut in half of heatmap plot

javascript - 切换滑出菜单

javascript - ReactJs - 创建一个 "If"组件……好主意吗?

javascript - body 高度改变后保持滚动位置