代码之家  ›  专栏  ›  技术社区  ›  nathanvda

rails3:render:json不能从jquery中读取?

  •  0
  • nathanvda  · 技术社区  · 14 年前

    我有两个Rails应用程序。在第一个应用程序中 我的控制器中有以下方法:

    def delivery_status
      envelope_id = params[:id]
      render :json => envelope.to_json(:include => [:deliveries, :log_lines])
    end
    

    如果转到浏览器中的URL,它会很好地显示我的JSON。似乎可以。 但是,如果我通过jquery从我的第二个应用程序调用它,使用以下方法:

    $(document).ready(function(){
      $('#provisioning_sms_details_dialog').hide();
    
      $('.get_sms_details').live('click', function(event) {
          var el = $(this),
              data_url = el.attr('data-url');
          $.ajax({
            url: data_url,
            dataType: 'text',
            success: function(data, status, req) {
              alert('received with status' + status)
              alert('received json ' + data);
            }
          });
      });
    });
    

    然后用正确的参数点击正确的URL,但是 data 总是空的。 我第一次尝试使用 $.getJSON 然后 $.get 结束于 $.ajax . 我不确定,但似乎我在服务器端做错了什么。 如果我查看firebug中的请求,那么响应确实是空的。但是,我不明白,如果让浏览器访问相同的URL,我会得到我的JSON对象。

    有什么见解如何解决这个问题吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Magnar    14 年前

    这是跨域请求吗?在这种情况下,您的Ajax请求将是head类型,并且您只会看到一个空的主体。Ajax调用受 same origin policy .

    如果是这样的话,你可以研究使用 JSONP 从而解决了这个问题。