jQuery 获取针对 Sinatra 的请求未获取文本

标签 jquery ruby ajax sinatra

我有一个非常简单的 sinatra 站点,我正尝试通过 jQuery 通过 ajax 访问它。

为了让事情变得非常简单,这个代码片段:

get '/behavior_count' do
  "60"
end

在浏览器中返回“60”,在 jQuery 中尝试通过 $.get 访问站点时显示为空字符串。奇怪的是在 Firebug 中,虽然响应为空,但 HTTP header 正确地将 Content-Length 描述为 2,我可以看到请求显示在服务器上。

是否有 Sinatra 特有的东西没有返回我的数据,或者我没有正确使用 jQuery?

如果有帮助,我也试过这段代码:

get '/behavior_count' do
  content_type 'text/plain', :charset => 'utf-8'
  "60"
end

我的 jQuery 看起来像

$.get('http://mysite:4567/behavior_count'); // Ignore the response, but
                                            // watch the request in firebug

有什么想法吗?

最佳答案

在有人给出正确答案之前,这里是我尝试过的最小示例并且它有效:

测试.rb:

require 'rubygems'
require 'sinatra'

get '/' do
  haml :test
end

get '/howmany' do
  "42"
end

views/test.haml:

%html
  %head
    %script{:type => "text/javascript", :src => 'js/jquery.js'}
    :javascript
      $(document).ready(function() {
        $('#btn').click(function(event){
          $.get('/howmany', function(data) {
            $('#answer').html(data);
          });
        });
      });
    %title Test page

  %body
    %input#btn{:type => 'button', :value => 'How many?'}
    #answer

(当然还有public/js/jquery.js)

关于jQuery 获取针对 Sinatra 的请求未获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2275535/

相关文章:

javascript - 使用 jQuery 代理时删除事件监听器

Jquery slideToggle 破坏 iframe

javascript - JQuery 切换下一类

jquery - Ajax 到 Socket.io 服务器加载

ios - Podfile 未下载最新 Swift 3 版本的 pod

ruby - rake 中止,不知道如何构建任务 'jobs:work'

ruby - GitHub Action 安装 gem 失败

javascript - 使用 JavaScript 检查互联网连接

ajax - 在结束 AJAX 请求之前等待 node.js 回调完成

php - 使用 AJAX 检查 Codeigniter session 是否已过期