php - 为什么 PHP 只能与 Ajax 一起工作而 Python 不能?

标签 php python ajax

构建响应 Ajax 请求的 PHP 脚本非常简单:

<?php
  $command = $_POST["command"];
  if ($command == "say_hello") {
    $name = $_POST["name"];
    echo json_encode(array("message" => "Hello, " . $name));
  }
?>

并且,至少如果您在客户端使用 jQuery,并且您在原始请求上指定了回调函数,则包含消息的数组将被传递到该回调函数。

但是使用 Python 就没那么简单了。或者至少我还没有想出如何让它变得如此简单。如果我只是尝试“打印”一个响应(类似于上面 PHP 的“echo”语句),客户端不会得到任何回复。

每当我在互联网上查看如何使用 Python 响应 Ajax 请求时,答案总是涉及使用 Django 或其他一些 Web 框架。

我知道这些东西很棒,但是 PHP 做了什么使得不需要使用类似的包?我想用 Python 而不是 PHP 编写我的服务器端脚本,但我更喜欢 D.I.Y.将第三方框架用于应该(对吗?)一项非常简单的任务的方法。

有什么帮助吗?我们将不胜感激如何执行此操作的示例。

最佳答案

But with Python it's not that simple. Or at least I haven't figured out how to make it that simple. If I just try to "print" a response (paralleling PHP's "echo" statement above) the client doesn't get anything back.

我可能有一些细节错误,但我会尽力解释为什么会这样。首先,您正在谈论的 PHP 直接嵌入到 apache 网络服务器中。当您执行 echo 时,它会将结果输出到响应流(服务器和客户端之间的 TCP 连接)。当您在 Python 中执行 print 时,您所做的是将结果输出到标准输出(命令行)。

大多数语言如何与网络一起工作,是请求进入某种网络服务器,然后该网络服务器执行程序。该程序负责返回网络服务器获取的流,并通过 TCP 连接流式传输到客户端。

我假设网络服务器将 PHP 标准重定向到网络服务器流,这就是 PHP 能够使用 echo 返回其结果的方式。这是异常(exception),而不是规则。

因此,要使用 python 来处理请求,您需要有一个可以以某种方式执行 python 的网络服务器。这通常是使用 CGI 完成的。最近,像 mod_python 这样的东西被用来在 apache 中托管 python。现在,使用 wsgimod_wsgi,这是为与 python 通信的网络服务器定义的标准。

你可能想看看像 web.py 这样的东西,这是一个极简主义的 Python Web 框架。这将使您非常接近您想要做的事情。

关于php - 为什么 PHP 只能与 Ajax 一起工作而 Python 不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10906051/

相关文章:

php - preg_quote 忽略 preg_match_all 中的尾随点

caching - Nginx FastCGI 缓存 VS Varnish?

python - 如何使用过滤器从列表中构建查询?

javascript - 当用户滚动到底部时,Ajax 函数会多次触发

jquery - 如何在jQuery的ajaxError中获取JSON对象?

PHP/MySQL : Storing images captions on database?

php - 通过 PHP 优化 MySQL InnoDB 插入

python - Django 设置 ‘SECRET_KEY’ 的目的是什么?

python - Pyspark 窗口函数计算站点之间的公交数量

javascript - jQuery Ajax 文件上传