2017-08-29 61 views
1

我是Javascript中的新成員,並且出現以下問題。所以,我做一個簡單的瓶API返回一個簡單的JSON無法使用getJSON從Flask Rest API獲取Json

瓶代碼:

from flask import Flask, jsonify 
app = Flask(__name__) 
@app.route('/test') 
def test(): 
    return jsonify({"result":"wt is works!"}) 

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

我運行它使用gunicorn -k gevent -w 5 main:app,當我在瀏覽器中檢查localhost:8000/test它返回的JSON正常

但是當我嘗試使用Jquery獲得它不會返回任何內容。我的HTML沒有從localhost:8000/test

我當前的HTML代碼得到任何值:

<html> 
    <head> 
     <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 
     <script type=text/javascript> 
      $(document).ready(function(){ 
       $.getJSON(
        "http://localhost:8000/test", 
        {format: "json"}) 
        .done(
         function(data) { 
          var plot_id = data.result; 
          $("#retval").html("<strong>" + plot_id + "</strong>"); 
         } 
        ); 
      }); 
     </script> 
    </head> 
    <body> 
     <div id="retval"></div> 
    </body> 
</html> 

但是,當我更改URL,並嘗試從另一個API獲取數據,讓來自https://jsonplaceholder.typicode.com/posts/1它的工作原理說。

我試過的解決方案來源:

運行

但它仍然無法正常工作,有人可以幫助我租賃來找出問題所在?

回答

1
  • 定義端口用作服務器端口:app.run(host='0.0.0.0', port=8000)
  • 更重要的是,瀏覽器的方式獲得您的localhost:8000/test功能與getJSONajax是不同的。它有一個關於'access-control-allow-origin'的問題。在燒瓶中,您可以使用包裝flask-CORS完成工作。
+0

哇,燒瓶-CORS解決了我的問題:)直到現在我才知道。謝謝 – malioboro

0

你的JS有幾個錯誤。

最明顯的是,您正在請求一個無效的URL。 0.0.0.0是一個可以綁定服務器的接口,但它不是您可以請求的URL。使用localhost或192.168.0.1。

我想說的另一個主要錯誤是URL和下列選項對象之間沒有逗號,但實際上getJSON不帶選項參數。完全刪除該對象。

+0

對不起,有關URL,我混了我的代碼。我已將其更改爲localhost並放置逗號。但它仍然不起作用。我應該刪除什麼? '格式'?我剛剛試圖刪除它,它仍然不起作用 – malioboro

+0

我已更新我的代碼,修復'localhost'和逗號 – malioboro

+0

您需要進行一些調試。請求是否完全針對您的Flask應用程序?你能看到它在瀏覽器調試工具中還是在Flask控制檯本身?如果是這樣,返回的是什麼? –