0

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

有没有人可以解决我的问题?

4

1 回答 1

1

您应该尝试的一件事是将 a 添加content_type到您的处理程序中,以便 Sinatra 知道要添加到 HTTP 响应标头中的内容:

发布“/服务/任务/创建”做

  内容类型:json

  puts '创建任务'

  数据 = request.body.read
  jsonData = JSON.parse(数据)
  puts '收到 JSON:' + jsonData.to_s

  data.to_json

结尾

如果您想要/需要,您可以使用'application/json'而不是。:json

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

于 2013-06-08T19:01:21.547 回答