Javascript 在Ajax获取后从Flask服务器获取数据
我正在试验Flask和Ajax。在服务器端,我有一个非常简单的web应用程序,它应该加倍并返回一个传递给它的数字,我从Flask网站上的示例中编写了cribing。以下是Python代码:Javascript 在Ajax获取后从Flask服务器获取数据,javascript,jquery,python,ajax,flask,Javascript,Jquery,Python,Ajax,Flask,我正在试验Flask和Ajax。在服务器端,我有一个非常简单的web应用程序,它应该加倍并返回一个传递给它的数字,我从Flask网站上的示例中编写了cribing。以下是Python代码: from flask import Flask, request, jsonify # Initialize the application app = Flask(__name__) # Route that receives and processes the Ajax request @app.r
from flask import Flask, request, jsonify
# Initialize the application
app = Flask(__name__)
# Route that receives and processes the Ajax request
@app.route('/')
def index():
print 'In index()'
data = request.args.get('data', 0, type=int)
print 'Received Ajax post - Data: ', data
return jsonify(dict(results=str(data*2)))
# Main
if __name__ == '__main__':
app.run(
host = '0.0.0.0',
port = int('8080'),
debug = True # TODO: Disable debug mode after testing is complete
)
在客户端,相关片段是:
$('#dataSubmitBtn').button().click(submitAdditionalData);
function submitAdditionalData() {
var j = $.getJSON(
'http://127.0.0.1:8080',
{data: 15}, // Payload
function(returnedData) { // Success function
console.log('Data returned from server: ', returnedData.results);
}
).done(function() {
console.log('Successful execution');
}).fail(function() {
console.log('Error');
}).always(function() {
console.log('Complete');
});
return false;
}
当我运行这个Python类并打开我的网页时,fail和always案例的函数会被执行,但是success案例的函数永远不会执行。但是,如果我输入
http://127.0.0.1:8080/?data=30
在我的浏览器栏中,我得到
{
"results": "60"
}
这是我认为我应该期待的。Javascript代码中是否存在问题?在Python代码中?可能两者都有?正如@SLaks提到的,您试图从另一个域获取数据,这在下是不允许的,但通过使用是允许的
要使用JSONP,您需要在服务器端进行一些更改。下面是一个例子。然后,在客户端,需要一个
回调
(由服务器端定义)参数。如果您使用的是jQuery.getJSON
,请查看以了解更多详细信息。HTML页面和Python应用程序都位于同一台服务器上,但是是的,第一台由Apache在端口80上提供,第二台由Flask开发服务器在端口8080上提供。这就是问题所在?不同的端口有不同的来源。好吧,我可以通过停止使用开发服务器并按照我的计划在Apache下部署Flask来解决这个问题。