Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不';我不能使用$.post()从我的Sinatra web服务获得响应吗?_Javascript_Jquery_Ruby_Sinatra_Http Post - Fatal编程技术网

Javascript 为什么不';我不能使用$.post()从我的Sinatra web服务获得响应吗?

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

我通过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.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