我希望能夠將表單提交到兩臺服務器。這就是爲什麼(如果有更好的方法做到這一點,我是所有的耳朵)向兩臺服務器提交表單
我有一個iframe嵌入機械土耳其人。 iframe中有一個表單。
當工作人員提交表單,我需要做兩件事情:
我需要通知我的本地服務器,這樣我可以採取一些行動的時候了。 我需要將結果發佈到mturk,以便turk顯示下一個作業。
如果我不這樣做,我的服務器需要輪詢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")});
此結果在js錯誤
XMLHttpRequest cannot load http://workersandbox.mturk.com/mturk/externalSubmit. Origin http://mytest.herokuapp.com is not allowed by Access-Control-Allow-Origin.
我無法控制服務器,所以我無法解決這個問題。
任何有關這樣做的正確方法的建議將受到感謝。
直接從客戶端進行雙重提交是一種可怕的方法。如果兩臺服務器需要這些數據,然後將表單提交到一個(本地服務器)上的腳本,該腳本執行自己的處理,並作爲其他服務器的代理 - 即。發出自己的HTTP請求。有了這個想法,你應該能夠從本地服務器到客戶端做出單一的迴應,涵蓋兩個方面。 – 2013-03-27 03:00:44
是的,這就是我想要做的 - 但表單提交必須從客戶端完成,以便turk可以轉發到下一張圖片。從服務器執行POST不會刷新iframe,因爲turk服務器無法更新它 – 2013-03-27 03:19:36
但「下一個圖像」當然只是一個url,它可以通過響應中的「傳送」。 – 2013-03-27 03:23:39