【发布时间】:2013-06-07 09:27:16
【问题描述】:
我正在通过 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,我不知道为什么。
有人可以解决我的问题吗?
【问题讨论】:
-
是否有某些原因需要将其发布为 JSON?我一直发现它让事情变得更加困难。 HTTP POST 完美运行。除此之外,您是否确认路线收到了什么?例如`warn "data = #{data.inspect}" 等(或使用调试器/pry)
-
post 方法工作得很好。我正在接收 JSON 并且可以使用它。但无论是否为 JSON,我都无法发送任何响应,并且响应不需要是 JSON。
-
您是否尝试过使用其他非 ajax/js 客户端(如 cURL)?例如
curl -X POST --data 'querystring=here' http://example.org/service/task/create.
标签: javascript jquery ruby sinatra http-post