2017-09-12 70 views
0

網頁和Python腳本都是在樹莓派(無互聯網連接)本地。AJAX請求返回Python的文件的內容,而不是執行它

從命令行調用時,Python腳本可以正常運行。

JavaScript的網頁中使用AJAX調用Python腳本:

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'); 

我也試過 「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("GET", "myscript.py", true); 
    xmlhttp.send();  

不執行腳本(我可以從日誌中告訴)。

我誤解了AJAX的功能嗎?它可以不運行本地腳本?

我的最終目標:從網頁的用戶條目傳遞給腳本,配置樹莓派。

編輯:再次,一切都是地方:沒有服務器,沒有互聯網,沒有HTTP。

如果答案是「不,你不能這樣做,沒有一個服務器」這就是我需要聽到,我會看看使用80端口,而不是達到我想要的。

+1

AJAX只是發送HTTP請求。您需要將您的服務器配置爲以您想要的方式處理該請求。 – SLaks

+0

可以這樣做。但是你不能通過http在服務器上執行任意代碼。您需要在您的服務器上運行一個Web服務器(在這種情況下爲raspberry-pi),並設置特定的終結點(urls)。一個常見的選擇是使用名爲[flask]的python web框架(http://flask.pocoo.org/)。有許多關於在rasberry pi上使用燒瓶的指南和教程。只是谷歌它。 –

+0

@SLaks「您需要配置您的服務器」。沒有服務器。正如我所說,一切都是本地的,沒有互聯網,沒有服務器。 –

回答

0

Python(響應HTTP請求)由Web服務器執行。

如果從file://網址抓取,你要麼得到一個錯誤或原始內容,具體取決於您的瀏覽器。

您可以運行,可以在任何端口上調用Python腳本(使用Python或CGI變體)的任何HTTP服務器。

相關問題