2016-06-17 8 views
0

jQuery.post()コールを使用して外部のウェブサイトにデータを送信するGoogle Chrome拡張機能を作成しています。外部Webサイトは、Flaskエンドポイントを使用してデータを処理し、結果を生成します。残念ながら、結果をクライアントに転送する方法がわかりません。これどうやってするの?JQueryとFlaskをインターフェースする方法は?

私はそうのように、フラスコ内render_templateコールを使用して試してみた:

app.route("/my_endpoint", methods = ['POST']) 
def my_endpoint(): 
    print ('hi') # this statement prints 
    results = ... 
    if request.method == 'POST': 
     # want to eventually replace this with 
     # return render_template("results.html", results=results) 
     return render_template("test.html") 

しかし、これは実際にページtest.htmlをロードしません。

私も

post_results = function(input_data) { 
    jQuery.post("my_flask_endpoint", 
     input_data, 
     function (data, textStatus, jqXHR) { 
      ... 
     } 

のように、(私は可能であれば行うことを希望されない)コールバックを使用してChromeの拡張機能に戻ってデータを転送しようとしました。しかし、私は入れてよく分かりませんコールバック関数では、 "データ"はHTMLの束であり、(URLとは対照的に)HTML文字列しか与えられていないページを読み込む方法がわからないためです。

答えて

1

dataは、あなたが送ったものなので、HTMLの束です! render_templateは、特定のページをユーザーに表示するために使用するJinja2関数で、最終的にはすべてがHTMLです。あなたがやっていることは、test.htmlのHTMLレンダリングをデータとして返すことです。何をしようとする(と思う)

/my_endpointにINGのPOST/resultsに「結果」オブジェクト、またはトリガーにリダイレクトを返すのいずれかですか?

データの処理内容に応じて、いずれにしてもかまいません。

データをユーザーの現在のページ/ jQueryコールバックに戻したい場合は、resultsをJSONとして返します(結果は辞書であると仮定します)。 jsonifyのより詳細な説明は、あなたが結果を表示するために別のページに移動することを計画している場合、あなたはフラスコにリダイレクトを実行するかどうかを決定し、使用してデータをレンダリングする必要があり、またhere

return flask.jsonify(**results) 

見つけることができますresults.htmlをテンプレートとして使用するか、クライアントに結果を渡して、受信したデータ自体をナビゲートして転送させます。

関連する問題