【问题标题】:How to use AJAX call when to execute Python Script?执行 Python 脚本时如何使用 AJAX 调用?
【发布时间】:2012-08-14 07:02:35
【问题描述】:

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

【问题讨论】:

  • 如果 ajax 请求接收的是脚本的源代码,而不是脚本的输出,您需要查看您的服务器配置,而不是您的 AJAX 代码。
  • 谢谢,我很害怕,因为这会涉及到配置 Google App Engine。
  • 是的!这是我将服务器配置为返回 Python 脚本的输出而不是脚本本身的地方吗?
  • 我不是 100% 确定,因为我从未使用过 GAE,但从 Hello, World 的示例来看,您似乎在那里配置了它?
  • 您应该将您的 app.yaml 发布到您需要帮助的地方

标签: python ajax google-app-engine wsgi


【解决方案1】:

您试图将 python 脚本作为静态文件查看,这就是为什么应用引擎会返回代码而不执行它。

假设您来自 PHP 世界,除非您在 .htacces 中(在 apache 服务器上)进行 URL 重写,否则将您的浏览器指向 PHP 脚本的位置将执行该脚本。

在 App Engine 和许多 python 网络框架中,这会有所不同。 为了将某个 URI 指向某个脚本,您可以编辑应用目录中的 app.yaml 文件。

默认情况下,所有 URI 都将指向一个名为 main.py 的脚本。这是在您使用谷歌应用引擎启动器创建应用时生成的 app.yaml 中定义的。 定义 this 的部分如下所示:

handlers:
- url: /
  script: main.py

在 main.py 中,您需要进一步指定如何根据 URI 处理您的请求。您可能希望使用 webapp 或 webapp2 框架来执行此操作,具体取决于您使用的是 python 2.5 还是 2.7。完成后,您可以简单地向这些 URI 发送请求,无论是通过 AJAX,还是作为表单的操作,或者直接转到它,或单击链接。

解释整个 webapp 和 webapp2 框架以了解如何进一步处理请求,可能超出了这个答案的范围(阅读:我厌倦了打字:p),但应用引擎文档有很好的“ python 2.5python 2.7 的入门指南。

【讨论】:

  • 感谢您的回复。原来问题出在我的 AJAX 调用上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-29
  • 2022-10-18
相关资源
最近更新 更多