我在Pyramid工作,但无法弄清楚如何从服务器向网站发送POST,并用Ajax捕获它

时间:2017-10-26 10:15:01

标签: javascript pyramid

我可以通过其他方式实现,但现在我需要从服务器发送请求,以避免设置计时器每100毫秒左右检查一次,而我只能向网站发送请求FROM Pyramid 。到目前为止我试过这个但没有运气:

我创建的View用于保存请求:

@view_config(route_name='request', request_method="POST")
def request(self):
    sometext = "Some random text"
    return Response(sometext)

Ajax:

function getmsg() {
    $.ajax({
        type:"GET",
        url:"/req", // Route for the View
        dataType: "text"
        success:function(result){
            alert( result );
            }
    });

请求只是不发送! 任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:2)

你不能" POST"从服务器。这不是金字塔限制,而是HTTP的方式(客户端向服务器发出请求)。

有几种方法可以将数据从后端发送到前端:

  • 轮询:浏览器每隔一秒左右发送一次请求。在大多数情况下,这是最简单的方法。除非该应用程序具有高度的实时性,否则我将转向解决方案。
  • WebSockets:浏览器将连接从HTTP升级到WebSockets,然后只要连接保持打开状态,浏览器就可以从WebSocket连接接收数据而无需任何请求。它工作得很好,但要求你有一个WebSocket设置(服务器端),所以它可能涉及。
  • 服务器发送事件:浏览器保持HTTP连接打开,服务器可以通过该连接发送数据。理论上它非常容易。实际上,服务器必须能够处理大量的并发连接,因此它可能必须是异步服务器。我不确定金字塔在生产中是否支持这种情况(可能还有枪炮?)。

答案 1 :(得分:0)

您正在发送" GET"来自Ajax的请求,但正在寻找" POST"请求金字塔。将您的Ajax类型更改为POST或删除@view_config参数中的request_method(这将接受帖子或获取。

答案 2 :(得分:0)

清除所有内容的权利......

如果你想在金字塔视图中发出一个AJAX请求,你不需要使用金字塔框架代码来做这个,而不是通用的python,看看请求库......

请参阅以下有关如何实现此目标的问题/答案:

AJAX request with python requests library

根据您的问题,这将允许您从服务器(即金字塔)向任何其他服务器发送ajax请求。