我目前正在尝试从我的服务器请求数据。我使用flask,我的响应函数从数据库获取数据并将其转换为稍后被jsonified的字典列表,如下所示:
@app.route('/database/customer/<int:customer_id>/', methods=['GET'])
def customer_id(customer_id):
c, conn = connectionCust()
computerdb = c.execute("SELECT * FROM Computers WHERE customer_id=(%s)", customer_id)
computerdb = c.fetchall()
computerList = []
for computer in computerdb:
computerDict = {
'computer_id': str(computer[0]).strip('L'),
'computer_name': computer[2]}
computerList.append(computerDict)
return jsonify(computerList)
如果我输入例如http://0.0.0.0:8080/database/customer/3 它会显示
[
{
"computer_id": "5",
"computer_name": "CUST3COMP1"
},
{
"computer_id": "6",
"computer_name": "CUST3COMP2"
},
{
"computer_id": "7",
"computer_name": "CUST3COMP3"
}
]
我的ajax代码连接到下拉列表,说:
$('#customer').chosen().change(function(event){
if(event.target == this){
$.ajax({
type: "GET",
dataType: "jsonp",
url: "http://0.0.0.0:8080/database/customer/" + $(this).val(),
success: function(data){
alert(data);
}
});
};
});
但我无法提醒发回的数据,当我查看日志时,它说
127.0.0.1 - - [30/Nov/2016 13:02:06] "GET /database/customer/3?callback=jQuery112006497998475787305_1480507320739&_=1480507320740 HTTP/1.1" 301 -
127.0.0.1 - - [30/Nov/2016 13:02:06] "GET /database/customer/3/?callback=jQuery112006497998475787305_1480507320739&_=1480507320740 HTTP/1.1" 200 -
我认为jsonify()或者ajax代码有问题。那些对这些事情更熟悉的人可能对如何访问我的回复有一些意见? 感谢。
答案 0 :(得分:1)
这似乎不是Flask方面的问题。尝试将Ajax调用dataType更改为 json 而不是jsonp并使用 async = false :
$('#customer').chosen().change(function(event){
if(event.target == this){
$.ajax({
type: "GET",
dataType: "json",
async: false,
url: "http://0.0.0.0:8080/database/customer/" + $(this).val(),
success: function(data){
alert(data);
},
error: function(data) {
alert(JSON.stringify(data));
}
});
};
});