Javascript 在Ajax获取后从Flask服务器获取数据

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

我正在试验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.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来解决这个问题。