2014-09-10 2 views
0

서버에서 실행중인 슬라이드 쇼 (jQuery Cycle2 플러그인)가 있습니다. 슬라이드 쇼는 jQuery 함수를 호출하는 슬라이드 쇼에서 버튼을 사용하여 일시 중지하고 중지 할 수 있습니다.AJAX 호출을 사용하여 원격 JS 함수 호출

응용 프로그램은 다음과 같이 구성되어 있습니다. index.php에서 다른 PHP 스크립트로 POST를 보내서 슬라이드 쇼 내용을로드하는 함수 내에서 슬라이드 쇼 함수 (중지, 일시 중지 등) 및 AJAX 호출을 정의합니다. 서버. 지금까지 이것은 잘 작동합니다.

이제 세 번째 장치에서 내 슬라이드 쇼를 원격 제어 할 수있는 다른 스크립트 (또는 아마도 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

디스플레이를 수행하는 장치에 변경 사항을 적용 할 수있는 방법이 있어야합니다. 디스플레이 장치에서 서버를 폴링하여 원격지에서 업데이트가 있는지 확인하는 것이 좋습니다. –

+0

코멘트 주셔서 감사합니다, 나는 AJAX 그것을 할 줄 알았지 만, 물론 완료/성공 함수에서 아무것도 지정하지 않으면 않습니다. 이걸 어떻게 달성 할 수 있는지 제안 해 주시겠습니까? HTML을로드 할 필요없이 JS 함수를 다시 호출하면됩니다. – Pete

+0

언제든지 AJAX를 타이밍 루프로 호출 할 수 있습니다. –

답변

1
  1. 난 당신이 클라이언트에 업데이트를 밀어 서버에 meteor js 같은 것을 사용하여 응용 프로그램을 다시하고 싶지 않아 있으리라 믿고있어. PHP 페이지를 다시 작성해야 참조 용으로 을 언급하고 있습니다.

  2. Websockets은 유망하지만 아직 안정적이지는 않습니다. 생산을위한 크로스 플랫폼.

  3. nginx를 실행 중이고 다시 컴파일 할 수있는 경우 NGiNX_HTTP_Push_ModuleAJAX Long Polling을 결합하여 사용할 수 있습니다.

  4. 그리고 마지막으로 모두 실패하면 AJAX가 좋은 이전 setTimeout and setInterval을 사용합니다.