Я хочу иметь возможность отправлять формы на два сервера. Вот почему (если есть лучший способ сделать это, я все уши)Отправить форму на два сервера
У меня есть iframe, встроенный в механический турк. В iframe есть форма.
Когда работник отправляет форму, мне нужно сделать две вещи:
мне нужно уведомить свой локальный сервер, так что я могу предпринять какие-то действия сразу. Мне нужно опубликовать результаты в mturk, чтобы следующая работа отображалась турком.
Если я этого не делаю, мой сервер должен опросить turk для завершения работы, что неэффективно.
Я пробовал несколько схем, но не мог заставить их работать.
Я пытался использовать Ajax, чтобы сделать один пост в местном масштабе, и одну форму представить, используя код, который выглядит следующим образом:
<%= form_for(@task, :url => "http://workersandbox.mturk.com/mturk/externalSubmit",
:remote => true, :method => "post", :authenticity_token => false) do |f| %>
....
и в моих unobstrusive JS файл
$(form).post({url: "/notify",opt, function() {console.log("notify done")});
Это приводит к in a js error
XMLHttpRequest cannot load http://workersandbox.mturk.com/mturk/externalSubmit. Origin http://mytest.herokuapp.com is not allowed by Access-Control-Allow-Origin.
У меня нет контроля над сервером, поэтому я не могу исправить эту проблему.
Любые предложения относительно правильного способа сделать это были бы с благодарностью приняты.
Двойное представление прямо из клиента - это ужасный подход. Если двум серверам нужны данные, отправьте форму на скрипт на одном (ваш локальный сервер), который выполняет свою собственную обработку и действует как прокси-сервер для другого сервера, т. Е. делает собственный HTTP-запрос. С мыслью вы должны иметь возможность сделать один ответ с локального сервера клиенту, охватывающий оба аспекта. –
Да, это то, что я хотел бы сделать, но форму submit нужно сделать от клиента, чтобы турк мог перейти к следующему изображению. выполнение POST с сервера не обновит iframe, так как у turk-сервера нет возможности его обновить. –
Но, безусловно, «следующее изображение» - это всего лишь URL-адрес, который можно «пропустить» в ответ. –