为什么我没有使用$.post()从我的Sinatra web服务获得响应?

Why don't I get a response from my Sinatra web service using $.post()?

本文关键字:web Sinatra 我的 服务 响应 post 为什么      更新时间:2023-09-26

我正在通过Ajax向Sinatra web服务发送JSON,但我没有得到任何响应。

这是请求:

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

Sinatra web service是:

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,我不知道为什么。

有谁能解决我的问题吗?

您应该尝试在处理程序中添加content_type,以便Sinatra知道要向HTTP响应头添加什么:

<>之前Post '/service/task/create' docontent_type: json放入'create task'Data = request.body.readjsonData = JSON.parse(data)put 'received JSON: ' + jsonData.to_sdata.to_json结束之前

如果你想/需要,可以用'application/json'代替:json

此外,您应该能够从curl或使用HTTParty的命令行工具命中该URL。发送一些JSON,看看你会得到什么。