2014-09-10 69 views
0

我有一個幻燈片(jQuery Cycle2插件)在服務器上運行。幻燈片放映可以通過幻燈片上的jQuery函數按鈕暫停和停止。AJAX調用一個遠程JS函數

該應用程序的結構如下:在index.php中,我定義了一個函數中的幻燈片函數(停止,暫停等)和一個AJAX調用,該函數將POST發送到另一個PHP腳本以加載幻燈片內容服務器。到目前爲止,這很好地工作。

現在,我想要另一個腳本(或者Webservice)remoteControl.php,它允許我從第三個設備遠程控制我的幻燈片。所以說我在服務器上和其他網站(可能是同一個域名)上運行幻燈片,我也使用AJAX調用index.php中的幻燈片功能。 目前這不起作用。 在我的index.php的主體部分,我把:

if(isset($_POST['action'])){ 
    $actionOnSlideshow = $_POST['action']; 
    echo '<script>'.$actionOnSlideshow.'();</script>'; 
} 
?> 

然後是所有其他內容和腳本的幻燈片。 $actionOnSlideshow變量包含從remoteControl.php中的AJAX請求發送的相應函數。 這可能與同源策略有關。第二個AJAX調用是來自同一個域,所以這不應該成爲問題!?

+1

您必須有辦法將更改推送到執行顯示的設備。您可能需要考慮讓顯示設備輪詢服務器以查看遠程是否進行了更新。 – 2014-09-10 15:30:34

+0

感謝您的評論,我認爲AJAX會這樣做,但如果我沒有在done/success函數中指定任何內容,它當然不會。你有什麼建議可以在這裏實現。我不必加載任何HTML,只需再次調用JS函數。 – Pete 2014-09-10 15:37:22

+0

您可以隨時在定時循環中調用AJAX。 – 2014-09-10 15:38:05

回答

1
  1. 我假設你不想使用重建的東西你的應用,如服務器,其推動更新客戶端上 meteor js。 你必須重建你的php頁面,所以我只是提到 作爲參考。

  2. Websockets是有希望的,但還不夠穩定 跨平臺的生產。

  3. 如果您正在運行nginx並可以重新編譯,您可以使用NGiNX_HTTP_Push_ModuleAJAX Long Polling的組合。

  4. 最後如果一切都失敗了,那麼AJAX會使用舊版的setTimeout and setInterval