2017-08-31 6 views
0

をデコードすることができます。PythonのサーバーへのAjaxポスト:いいえJSONオブジェクトが、私はこのエラーを取得しています

ValueError: No JSON object could be decodedサーバーから

これは、クライアント側からAJAX要求

 function searchDB(profile_url) { 
      console.log(profile_url); 
      $.ajax({ 
       type: 'POST', 
       url:'http://127.0.0.1:5000/update_greenhouse', 
       data: JSON.stringify(profile_url), 
       contentType: "application/json" 
      }) 
     } 

Serverですコード:

@app.route('/update_greenhouse', methods=['GET', 'POST', 'OPTIONS']) 
def update_gh(): 
    y = request.data 
    print(y) 
    json.loads(y) 

私はcontentTypeをjsonに設定しています。なぜサーバーは私にそのエラーを与えていますか?

+0

'request.get_json()'を使用してください – T4rk1n

+0

'profile_url'は本当にjsonオブジェクトですか?それはちょうどurlのように聞こえます...多分あなたは本当にjsonオブジェクトに変換する必要があります' {profileUrl: profile_url} '? –

+0

がAJAXリクエストで 'JSON.stringify()'を追加しました –

答えて

0

サーバーに適切なJSONを送信していないようです。 contentTypeを設定するだけでは不十分です。あなたのデータ(profile_url)は、JSONオブジェクトとして適切にエンコードする必要があります。

はあなたの要求コードにこのような何かを試してみてください:

data: JSON.stringify({'url': profile_url}) 

サーバーには、再度使用する基本辞書を取得します。実際に文字列を渡すだけの場合は、サーバー上でjson.loads()を省略してrequest.dataの方向に操作することができますが、こんにちはワールドアプリ以上のものを構築するには、JSONなどのより構造化された形式を使用することを強くお勧めします。

また、Flaskリクエストごとにレスポンス(またはエラー)を返す必要があります。 JSONベースのAPIを構築する場合は、Flaskのjsonifyを使用することをおすすめします。おそらく更新された状態が何であれの詳細と、成功した

return flask.jsonify({'status': 'updated'}) 

、の線に沿って何か。エラーがある場合は、そのように、適切なエラーコードで応答を返す必要があります。

return flask.make_response(jsonify({'error': 'Error details'}), 418) 

は、適切なHTTP error codeが何であれで418を交換します。

+0

は 'JSON.stringify()'しませんか? –

+0

実際のJSONオブジェクトを渡す必要があります。 – robmathers

+0

は有効なjsonオブジェクトの文字列ではありませんか? –

0

理由はわかりませんが、の"OPTIONS"が原因です。それを削除し、すべてが機能しました。

関連する問題