使用XMLHttpRequest的AJAX请求返回本地Python文件的内容而不是执行它

时间:2017-09-12 17:48:11

标签: javascript python raspberry-pi xmlhttprequest

网页和Python脚本都是Raspberry Pi中的本地(没有互联网连接)。

从命令行调用时,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可以做什么?它可以不运行本地脚本吗?

我的最终目标:将用户条目从网页传递到脚本,以配置Raspberry Pi。

编辑:同样,一切都是本地的:没有服务器,没有互联网,没有HTTP。

如果答案是“不,你不能在没有服务器的情况下做到这一点”,这就是我需要听到的全部内容,我将会看到使用端口80来实现我想要的目标。

1 个答案:

答案 0 :(得分:0)

Python(响应HTTP请求)由Web服务器执行。

如果您从file://网址抓取,则会收到错误或原始内容,具体取决于您的浏览器。

您可以在任何端口上运行任何可以调用Python脚本(使用Python或CGI变体)的HTTP服务器。