2017-09-12 5 views
0

웹 페이지와 Python 스크립트는 모두 Raspberry Pi (인터넷에 연결되어 있지 않음)에 로컬입니다.XMLHttpRequest를 사용하는 AJAX 요청은 로컬 Python 파일의 내용을 실행하는 대신 반환합니다.

명령 줄에서 호출 할 때 Python 스크립트가 잘 실행됩니다. 웹 페이지에서

자바 스크립트는 파이썬 스크립트를 호출하는 AJAX를 사용

나는 또한 같은 결과를 "GET"시도
var xmlhttp = new XMLHttpRequest();  
    xmlhttp.onreadystatechange=function() { 
     alert('readyState: '+ xmlhttp.readyState)  // Returns: 4 
     alert('status: '+ xmlhttp.status)    // Returns: 0 
     alert('statusText: '+ xmlhttp.statusText)  // Returns: (Blank) 
     alert('responseText: '+ xmlhttp.responseText) // Returns contents of script 
    } 
    xmlhttp.open("POST", "myscript.py", true); 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlhttp.send('test'); 

:

스크립트가 실행되지 않습니다
var xmlhttp = new XMLHttpRequest();  
    xmlhttp.onreadystatechange=function() { 
     alert('readyState: '+ xmlhttp.readyState)  // Returns: 4 
     alert('status: '+ xmlhttp.status)    // Returns: 0 
     alert('statusText: '+ xmlhttp.statusText)  // Returns: (Blank) 
     alert('responseText: '+ xmlhttp.responseText) // Returns contents of script 
    } 
    xmlhttp.open("GET", "myscript.py", true); 
    xmlhttp.send();  

(나는 할 수 로그에서 알리십시오).

AJAX가 할 수있는 것을 오해하고 있습니까? 로컬 스크립트를 실행할 수 있습니까?

내 궁극적 인 목표 : 웹 페이지에서 스크립트로 사용자 항목을 전달하여 Raspberry Pi를 구성하는 것.

편집 : 다시 말하지만 모든 것은 로컬입니다. 서버가 없거나 인터넷이없고 HTTP도 없습니다.

대답이 "아니오, 서버 없이는 그럴 수 없습니다"라는 말을 듣고 싶습니다. 대신 포트 80을 사용하여 원하는 것을 얻을 수 있습니다.

+1

AJAX는 HTTP 요청 만 보냅니다. 원하는 방식으로 요청을 처리하도록 서버를 구성해야합니다. – SLaks

+0

이렇게 할 수 있습니다. 하지만 http를 통해 서버에서 임의의 코드를 실행할 수는 없습니다. 서버에서 실행중인 웹 서버 (이 경우 raspberry-pi)가 필요하고 특정 끝점 (URL)을 설정해야합니다. 이것에 대한 일반적인 선택은 [flask] (http://flask.pocoo.org/)라고하는 python 웹 프레임 워크를 사용하는 것입니다. rasberry pi에 플라스크를 사용하는 방법에 대한 가이드와 자습서가 많이 있습니다. 그냥 구글. –

+0

@SLaks "서버를 구성해야합니다." 서버가 없습니다. 내가 말했듯이 모든 것은 지역적이며, 인터넷도없고, 서버도 없습니다. –

답변

0

(HTTP 요청에 대한 응답으로) 파이썬은 웹 서버에 의해 실행됩니다.

file:// 개의 URL에서 가져 오는 경우 브라우저에 따라 오류 또는 원시 콘텐츠가 표시됩니다.

모든 포트에서 Python 스크립트 (Python 또는 CGI 변형 사용)를 호출 할 수있는 HTTP 서버를 실행할 수 있습니다.