rails3:render:json无法从jquery中读取?

时间:2010-09-08 12:55:19

标签: jquery ruby-on-rails

我有两个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);
        }
      });
  });
});

然后使用正确的参数命中右侧网址,但data始终为空。 我首先尝试使用$.getJSON,然后使用$.get结束$.ajax。我不确定,但似乎我在服务器端做错了什么。 如果我查看firebug中的请求,响应确实是空的。然而,我不明白,如果让浏览器点击相同的网址,我会得到我的json对象。

有任何见解如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这是跨域请求吗?在这种情况下,你的ajax-request将是HEAD类型,你只能看到一个空体。 Ajax调用受same origin policy限制。

如果是这种情况,您可以考虑使用JSONP来解决问题。