【问题标题】:advantages of different ways of python javascript (pull) communication [closed]python javascript(拉)通信的不同方式的优点[关闭]
【发布时间】:2013-08-21 19:39:44
【问题描述】:

我正在实现我的 javascript 客户端和 python 服务器之间的拉式通信。我已经浪费了过去两周与 websockets 和 socketing 的斗争,但现在我决定放弃它。

我正在寻找最方便的方式来实现 python-javascript 通信,其中客户端向服务器发送请求,服务器可以回答。我见过很多方法,其中一些:

  • ajax
  • json
  • 插座等

我很想听听您对不同可能性的优势的看法。 (如果您也有一些很棒的教程可以用来入门,我将非常感激。)

【问题讨论】:

    标签: javascript python ajax json pull


    【解决方案1】:

    看来您对定义和技术有点困惑,所以让我先澄清一些定义(粗略的描述,不准确):

    • JSON:一种将数据结构(如数组)打包成字符串并检索数据的格式。它是提交实际数据最常用的格式之一,但它本身不能传输数据:它只是数据本身
    • AJAX:在不重新加载整个页面的情况下向服务器发送请求的主要技术。 AJAX 通过 HTTP 协议工作,并发送与您通过访问页面发送相同请求时发送的相同标头(例外:AJAX 特殊的标头,取决于库等)。 AJAX 本身是提交数据的技术,但不是数据本身。但是,例如,它可以提交以通常的 URL 编码形式编码的表单数据。但它也可以发送 JSON 数据
    • 套接字:套接字的定义非常广泛和笼统。通常,它描述了一个像 TCP 一样的低层(在层次结构中低于 HTTP),但是由于您描述的是 JS + Python,我假设您的意思是浏览器 - 客户端通信。在那种情况下,有 WebSocket。我还没有使用过该技术,但据我所知,它允许任意连接等。对于普通的用例来说,这是一种高级的方式。

    这些是您提到的技术。另外,我想再提两个:

    • XML:类似于 JSON,但格式不同。 XML 有各种优点和缺点。从我的角度来看,最大的优势是它比 JSON 更灵活并且在复杂的结构上更容易理解。但这种灵活性也带来了难以学习的缺点。
    • JSONP:与 AJAX 类似,它用于通信,但顾名思义,它提交 JSON 数据(我认为...)。具有允许跨域请求(也是高级的东西)的优势。

    由于您的问题不是那么精确,我将在 Web 上下文中回答它(如上面假设的那样):JavaScript 从浏览器运行,服务器是用 Python 编写的 Web 应用程序。

    为此,我建议结合使用 JSON 和 AJAX:JSON 在 JavaScript 和 Python 中都可以使用,而 jQuery 等库为通过 JSON 接收的数据提供了简单的接口。出于同样的原因,我推荐 AJAX:它易于使用,集成在大多数 JavaScript 库中,并且不需要在服务器端进行任何工作:对于服务器来说,只需处理一个请求。

    服务器端示例:

    # Request comes in:
    data = json.loads(request_body)
    # Do calculations
    output = json.dumps(out_data)
    send_response(output)
    

    在客户端,您可以使用纯 JavaScript 或 jQuery 来发送请求和处理响应。

    【讨论】:

    • 我很高兴能提供详细的答案,非常感谢您
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2012-04-17
    • 2018-07-02
    • 2014-01-03
    • 2010-09-07
    • 2011-08-12
    相关资源
    最近更新 更多