2011-05-04 2 views
1

웹 서버에서 여러 도미노 장비를 제어 할 수있는 홈 서버에서 인턴쉽을 시작합니다. 범 세계적인 아이디어는 버튼을 클릭하면 특정 스크립트가 서버에 생성되고 마이크로 컨트롤러를 제어한다는 것입니다.현재 html 페이지를 변경하지 않고 버튼을 클릭 할 때마다 CGI를 실행합니다.

강사는 AJAX를 사용하여 항상 한 페이지 만 머물러있는 간단한 웹 사이트를 만들었고 사용자 행동에 따라 메뉴를 가져 왔습니다 (사용되지 않으면 숨겨져 있고, 사용되면 앞에 나타납니다).

저는 CGI 스크립트를 실행하도록 구성된 아파치 서버를 설정했고 작동합니다. 항상 한 페이지에 머무르기 위해 '204 No Content'리턴 트릭을 사용하여 페이지에 대한 서버의 응답이 '이 페이지에 계속 머물러있을 필요가 없습니다.'라고 대답했습니다.

그러나 내가 가진 한 가지 문제점은 CGI가 한 번만 시작된다는 것입니다. 처음으로 버튼을 클릭하면 작동하지만 나중에는 아무 일도 일어나지 않습니다.

GET 메서드로 FORM을 사용하는 대신 버튼 코드로 SSI (shtml)를 사용했지만 스크립트를 두 번 실행하지 않았습니다.

잘못된 도구를 사용하고있을 수 있습니다. CGI를 계속 사용해야합니까? 또는 실제로 내가 원하는 것을 수행하도록 설계된 다른 AJAX, jquery와 같은 것이 있습니까?

읽어 주셔서 감사합니다.

편집 : 나는 주위에 방법을 찾았습니다. (포럼에 가서 다음 번에 멋진 해결책을 찾을 수있는 답변을 얻으려는 날을 필사적으로 찾은 필자는 항상 ....) 기본 링크를 사용했는데 어떤 이유로 버튼을 사용하는 것과는 다른 동작을합니다. 도대체 무엇이. 아직 사용 된 기술에 대한 내 심문은 계속됩니다.

EDIT2 : 내 솔루션은 엉터리입니다. 어떤 이유로 페이지 새로 고침 (또는 페이지가 처음로드 될 때)에서 스크립트가 호출되기도합니다. 이상하게 여기는 것은 이상한 부분입니다. 클릭하면 생성되기 때문에 ...

답변

0

jQuery와 해당 AJAX API에 익숙해야합니다. AJAX를 사용하지 않으면 새로운 페이지를로드 할 수 없습니다. 다음은 AJAX 호출의 예입니다.

$.ajax({ 
    url: 'http://server.domain.com/cgi-bin/myfile.cgi', 
    data: { 
     x: 1, 
     today: '20110504', 
     user: 'Joe' 
    } 
}).success(function(data, status, xhr) { 
    if (data) 
     alert(data); 
}); 

jQuery 1.5 이상용입니다. 당신은 어떤 버튼을 다음과 같이 클릭 할 때마다 것을 실행할 수있는 버튼에 대한

HTML :

<input type="button" id="doThis"/> 

자바 스크립트 :

$(function() { 
    $('#doThis').click(function() { 
     //put AJAX sample shown above, here 
    }); 
}); 
+0

안녕 마이크, 당신의 조언을 주셔서 감사합니다. 전자 제품을 더 전문적으로 다루기 때문에 html, 자바 스크립트, AJAX 및 jquery를 사용하는 방법을 알아내는 데는 시간이 좀 걸릴 것입니다. 그러나 거기에는 좋은 tutos가있는 것 같습니다. 한 가지 : '204 내용 없음'트릭을 사용하여 AJAX를 사용하지 않는 경우에도 페이지를 새로 고칠 수 있습니다, 나는 그 일을했다. 하지만, 제가 해보려 던 것이기 때문에, 해킹 이상은 아니 었습니다. 나는 의심 할 여지가없이, 사용 된 기술에 대해 의도하지 않았습니다. – gqq

관련 문제