我通过Ajax将JSON发送到Sinatra Web服务,但我没有得到任何响应。
这是请求:
$.post('http://url:port/service/task/create',JSON.stringify(sendData),function(data){
alert('success!' + data);});
Sinatra网络服务是:
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
,我不知道为什么。
有没有人能解决我的问题?
答案 0 :(得分:1)
您应该尝试的一件事是向您的处理程序添加content_type
,因此Sinatra知道要添加到HTTP响应标头的内容:
post '/service/task/create' do content_type :json puts 'create task' data = request.body.read jsonData = JSON.parse(data) puts 'received JSON: ' + jsonData.to_s data.to_json end
如果您需要/需要,可以使用'application/json'
代替:json
。
此外,您应该可以从curl
或使用HTTParty的命令行工具点击该网址。发送一些JSON,看看你得到了什么。