我正在试验 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/