2016-11-21 9 views
0

Python Djangoのviews.pyにAjax呼び出しで渡されたJsonデータからいくつかの要素を抽出しようとしています。Python POSTでJsonのコンテンツを抽出中にJSONをデコードできませんでした

私のjsファイル内の私のAJAX呼び出しは次のようになります。

$.ajax({ 
      url: "update/", 
      data: {'edited': editedFeature}, 
      dataType: 'json', 
      type: 'POST', 
      contentType: "application/json;charset=utf-8", 
      success: function(data){ 
      alert(data); 
      } 
     }); 

私はリーフレット層に取り組んでいること、ここで注意してくださいよとデータ属性でそのeditedFeatureにGeoJSON値は次のとおりです。

var editedFeature = selectedFeature.toGeoJSON(); 

マイviews.pyは、単に物事をテストするために次のようになります。

def update(request): 
    #ajax data 
    line = json.loads(request.body.decode("utf-8")) 
    rid = line['rid'] 

    print(rid) 
    print("testing edited route") 
    return HttpResponse("Success!") 

これが正しいかどうかは分かりません。同じような場合には、stackoverflowで利用可能な解決策をいくつか試してみました。

ValueError: No JSON object could be decoded

を私はline = json.loads(request.body)に変更した場合::

明確に私は直接使う print(request.body)をプリントアウトした場合、この文字列が現れるでしょう

ValueError: No JSON object could be decoded

edited%5Btype%5D=Feature&edited%5Bid%5D=J1276&edited%5Bgeometry%5D%5Btype%5D=LineString&edited%5Bgeometry%5D%5Bcoordinates%5D%5B0%5D%5B%5D=120.965&edited%5Bgeometry%5D%5Bcoordinates%5D%5B0%5D%5B%5D=14.5999&edited%5Bgeometry%5D%5Bcoordinates%5D%5B1%5D%5B%5D=120.964&edited%5Bgeometry%5D%5Bcoordinates%5D%5B1%5D%5B%5D=14.6017&edited%5Bgeometry%5D%5Bcoordinates%5D%5B2%5D%5B%5D=120.963&edited%5Bgeometry%5D%5Bcoordinates%5D%5B2%5D%5B%5D=14.6028&edited%5Bgeometry%5D%5Bcoordinates%5D%5B3%5D%5B%5D=120.962&... %5D%5Bcoordinates%5D%5B9%5D%5B%5D=14.6101&edited%5Bproperties%5D%5Bname%5D=South+Pier+-+Pier+North+via+Del+Pan

私はエラーが述べ発生しますrequest.bodyに何かがあると、デコードやロードが行われないのはなぜだろうか?別のことは、どうすればjsonの文字列からnameを得ることができますか?線rid = line['rid']は正しいですか?

+0

の上からそのような文字列のクエリまたは何かを渡した

 $.ajax({ url: "/plexus/load-map/update/", data: JSON.stringify(editedFeature), dataType: 'json', type: 'POST', contentType: "application/json;charset=utf-8", success: function(data){ alert(data); } }); 

data: JSON.stringify(editedFeature),

文字列はJSONではありません。 JSONを使用し、GETパラメータを使用しないようにajaxの設定を確認する必要があります。 – elyashiv

+0

こんにちは@elyashiv GETパラメータがどういう意味ですか? – Reiion

答えて

0

elyashivのおかげで、私は何を私の視点に渡して解決したのかを判断することができました。私のAJAX呼び出しから私は、このようなコードを作ってきたはずです。私は実際に

1

JSONの代わりにクエリ文字列を送信しています。(with this site, for example)の文字列をデコードすると、URLにデータを送信するのと同じように、値がban32の&になります。あなたは1つとしてそれを解析する必要があります。

+0

私はここを通過するデータの種類を決定する手助けをしてくれてありがとう。私はそれをチェックします:) – Reiion

+1

Firebugをデバッグに使用することができます。これは、Web開発に役立つより多くのデータと共に、ajaxリクエストを表示することができます。 – elyashiv

+0

もう一度@elyashivさん、ありがとうございました。これを改訂しました: 'data:JSON.stringify(editedFeature)、' – Reiion