0

JSON を Ajax 経由で Sinatra Web サービスに送信していますが、応答がありません。

これは要求です:

$.post('http://url:port/service/task/create',JSON.stringify(sendData),function(data){
    alert('success!' + data);});

Sinatra Web サービスは次のとおりです。

post '/service/task/create' do

  puts 'create task'

  data = request.body.read
  jsonData = JSON.parse(data)
  puts 'received JSON: ' + jsonData.to_s

  data.to_json

end

私も試しました:

json data

しかし、何も機能しません。

サービスがリクエストを受信したことを確認したところ、Firebug はリクエストが「200 OK」で終了したことを通知しましたが、回答は空でした。

純粋な JavaScript Ajax 呼び出しを使用すると、ステータスが常にあることがわかりましたが、その0理由はわかりません。

誰かが私の問題の解決策を持っていますか?

4

1 に答える 1

1

試してみるべきことの 1 つはcontent_type、ハンドラーに a を追加することです。これにより、Sinatra は HTTP 応答ヘッダーに何を追加すればよいかがわかります。

post '/service/task/create' do

  content_type :json

  puts 'タスクの作成'

  データ = request.body.read
  jsonData = JSON.parse(データ)
  puts '受信した JSON:' + jsonData.to_s

  data.to_json

終わり

'application/json'必要に応じて代わりに使用できます:json

また、 HTTPartycurlのコマンドライン ツールから、またはコマンドライン ツールを使用して、その URL にアクセスできるはずです。少しの JSON を送信して、返される内容を確認します。

于 2013-06-08T19:01:21.547 に答える