rails3: render: json не может быть прочитан из jquery? - PullRequest
0 голосов
/ 08 сентября 2010

У меня есть два приложения рельсов. В первом приложении у меня есть следующий метод в моем контроллере:

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 Ответ

1 голос
/ 08 сентября 2010

Это междоменный запрос?В этом случае ваш ajax-запрос будет иметь тип HEAD, и вы увидите только пустое тело.Вызовы Ajax ограничены той же политикой происхождения .

Если это так, вы можете использовать JSONP , что решило бы проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...