2017-12-20 38 views
-1

My Javascriptの投稿urlは、以下の例のように%20の空白で表示されます.FlaskでこのURLにアクセスしようとすると、検索変数はNoneと表示されます。Python Flask空白を含むURLパラメータを取得する

私はshowMapMArker()関数内でurlパラメータcmpnameを正しく解析していますか、それについてはわかりません。

POST /getLatLong/Ogden%20UT%20844 

のPython:

@app.route('/getLatLong/<cmpname>',methods=['GET','POST']) 
def showMapMarker(cmpname): 
    # print("Inside ShowMarker") 
    search = request.args.get(cmpname) 

//do something with search string 

return jsonify(search) 

Javascriptを:

function myFunction() { 
       var cmpCanName = document.getElementById("autocomplete").value; 
       var cmpCanAddress = document.getElementById("autocompletetwo").value; 

      var xhttp = new XMLHttpRequest(); 
      xhttp.open("POST", "/getLatLong/"+cmpCanAddress, true); 
      xhttp.setRequestHeader("Content-type", "application/json"); 
      xhttp.send(); 
      var response = JSON.parse(xhttp.responseText); 
     } 
+0

答えで指摘されているように、URL変数*と* request.args.get'を使用するだけでなく、実際にはリクエストのどこにでも 'cmpCanName'を渡すわけではありません'cmpCanAddress'を渡してから' cmpCanName'として受け取ります)。 JSONを渡したければ、代わりにURL変数と 'args'を混ぜることになります。では、実際に何をしたいですか?あなたの質問がどれを決定するのに十分に明確であれば、文字通りこれらの事のいずれかのための欺瞞があるので。 – davidism

+0

@davidismあなたのコメントは詳細なコメントのおかげでこの問題を解決するのに役立ち、次回以降は私の質問が明確になります – min2bro

答えて

1

showMapMarker(cmpname)はルート'/getLatLong/<cmpname>'に指定された値にcmpnameセットで呼び出されます。その値を要求引数の検索に使用します。要求にそのような引数がない場合、結果はNoneになります。 Noneを返していないにして、リクエストのURLは次のようになりしなければなりません:今すぐ

http://example.com/getLatLong/ham?ham=spam 

searchhamが自由に呼び出し側によって選ぶことができる文字列spam、だろう。私はそれがあなたが意図したものだとは思わないが、おそらく関数に渡された引数としてcmpnameを使用したいだけです。

+0

検索変数にNone Typeが表示されています。 – min2bro

+0

これは、フレームワークによって関数に渡される必要はありません。 'search = cmpname'を試してみてください。あなたのリクエストに引数やポストデータがないようです。 – mata

関連する問題