如何在执行Python脚本时使用AJAX调用?

时间:2012-08-17 19:58:45

标签: python ajax google-app-engine wsgi

我正在使用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"));

1 个答案:

答案 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.5python 2.7指南。