我正在使用Google App Engine开发应用程序,我想使用AJAX调用来执行Python脚本。我可以检索脚本,但我无法执行它。
我会使用WSGI,如下所示:How do you execute a server-side Python script using jQuery?。但是,我不希望我的页面重定向,而我保持页面重定向的解决方案是使用此处建议的AJAX调用:Run CGI application without redirecting from HTML,此处:Make a tag act like input button。
现在我使用HTML表单,但我想阻止它重定向页面。
<form action="/token" method="post" >
<div> "some button code" </div>
</form>
所以我一直在尝试使用AJAX,但它会返回代码而不执行它
$.post('js/mailToken.py', { testdata: 'hello world' },alert("success"));
答案 0 :(得分:2)
您正试图将python脚本作为静态文件生成,这就是为什么app引擎在不执行代码的情况下返回代码的原因。
假设您来自PHP世界,除非您在.htacces(在Apache服务器上)进行URL重写,否则将浏览器指向PHP脚本的位置将执行该脚本。
在App Engine和许多python Web框架中,这种方式有所不同。
为了将某个URI指向某个脚本,您可以编辑应用程序目录中的app.yaml
文件。
默认情况下,所有URI都将指向名为main.py
的脚本。这是在使用谷歌应用引擎启动器创建应用时生成的app.yaml中定义的。
定义它的部分如下所示:
handlers:
- url: /
script: main.py
在main.py中,您需要根据URI进一步指定处理请求的方式。您可能希望使用webapp或webapp2框架,基于您使用python 2.5或2.7。一旦完成,您可以简单地将请求发送到这些URI,无论是通过AJAX,还是作为表单的操作,或者直接发送到它,或者单击链接。
解释整个webapp和webapp2框架以了解如何进一步处理请求,可能超出了这个答案的范围(阅读:我厌倦了输入:p),但app引擎文档很棒“开始使用“python 2.5和python 2.7指南。