Сделайте POST-запрос в JavaScript и загрузите возвращенную страницу (Sinatra) - PullRequest
0 голосов
/ 13 марта 2012

Я работаю над веб-сайтом, на котором пользователь перетаскивает файл в div, и файл загружается на сервер с Sinatra через AJAX (XHR уровень 2). Я хочу получить ответ от Синатры в виде JSON, а затем отправить POST на другой маршрут с информацией из JSON. Этот POST должен привести к отображению другой страницы.

Я получил его туда, где я могу загрузить файл и получить ответ. Как бы я сделал все остальное?

P.S .: Я не хочу использовать GET, потому что некоторая информация не должна быть в URL.

Заранее спасибо.

1 Ответ

0 голосов
/ 13 марта 2012

Не совсем так, как вы хотите.Вы должны будете получить данные JSON в виде строки при последующем вызове POST.Идея состоит в том, чтобы создать элемент формы на лету и использовать его для последующего вызова POST.

код JavaScript

$.post("/test1/frm", {param1 : "param"}, function(d){
  if(d.success) {
    // subsequent POST call on success use commented code in case subsequent request is XHR
    //$.post(d.url, d.response_data, function(dd){/*callback if any*/});
    var frm = $("<form method='POST'>").attr("action", d.url).append($("<input name='data'>").attr("value", JSON.stringify(d.response_data)));
    frm.submit();
  }
});

код контроллера

post :frm do
  logger.debug params.inspect
  content_type :json
  {:success => true, :url => "/test1/frm_post", :response_data => {:a => :b}}.to_json
end
post :frm_post do
  logger.debug params.inspect
  "success"
end

Примечание вам необходимо заменить код контроллера на значения ключа с фактическим случаем использования.

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