Javascript 为什么不';我不能使用$.post()从我的Sinatra web服务获得响应吗?
我通过Ajax向Sinatra web服务发送JSON,但没有收到任何响应 请求如下:Javascript 为什么不';我不能使用$.post()从我的Sinatra web服务获得响应吗?,javascript,jquery,ruby,sinatra,http-post,Javascript,Jquery,Ruby,Sinatra,Http Post,我通过Ajax向Sinatra web服务发送JSON,但没有收到任何响应 请求如下: $.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
$.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告诉我请求以“200OK”结束,但答案是空的
使用纯JavaScript Ajax调用,我看到状态总是0
,我不知道为什么
有人能解决我的问题吗?您应该尝试的一件事是向处理程序添加
内容类型,这样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
发布'/service/task/create'do
内容类型:json
放置“创建任务”
数据=request.body.read
jsonData=JSON.parse(数据)
将“接收到的JSON:”+jsonData.s放入
data.to_json
结束
如果需要,可以使用'application/json'
而不是:json
此外,您还应该能够从curl
或使用命令行工具点击该URL。发送一点JSON,看看你得到了什么。你有什么理由把它作为JSON发布吗?我总是发现这会让事情变得更加困难。HTTPPOST工作得很好。除此之外,您是否确认了路线接收的内容?e、 g.`warn“data=#{data.inspect}”等(或使用调试器/pry)post方法工作得非常好。我正在接收JSON并可以使用它。但是我无法发送任何响应,无论它是否是JSON,而且repsonse不需要是JSON。您是否尝试过使用不同的非ajax/js客户端,如cURL?e、 g.curl-X POST——数据'querystring=here'http://example.org/service/task/create
。