将数据发送到python-cgi脚本,以便使用纯javascript从浏览器进行处理

send data to a python cgi script for processing from browser using pure javascript

本文关键字:javascript 浏览器 处理 数据 python-cgi 脚本      更新时间:2023-09-26

我有一个html测试文件,其中包含以下

<!doctype html>
<html lang="en">
    <meta charset="utf-8">
    <body>
        <script type="text/javascript">
        var httprequest=new XMLHttpRequest();
        httprequest.open("POST","hello.cgi",true);
        httprequest.onload=function(){
        if(httprequest.status==200){
            alert("");
         }// end of if
         }//end of onload
         var content={"hello":"world"};
         httprequest.send(JSON.stringify(content));
         alert(httprequest.responseText)
          </script
    </body>
</html>
</doctype>

在这种情况下,我试图发送数据{"你好":"世界"};到python cgi脚本

这是我的python脚本,它可以很好地处理从<form>html标签提交的数据

#!/usr/bin/python
try:
    import sys
    import cgi
    import traceback
    print("Content-type: text/html'n'n")
    print "<h1>YES</h1>"
    formData = cgi.FieldStorage()
    print(formData)
    print(s)
except Exception as e:
    print(e.message)
    print(traceback.print_exc())

当我发送数据{"hello":"world"}时,我的浏览器警报框显示没有从cgi脚本返回的数据。

正如cgi脚本中所反映的,我正在尝试打印"YES"并打印从javascript发送的数据。

我发现了几个与使用$.ajax相关的问题,但还没有发现使用XMLHttpRequest() 的方法

问题

如何使用纯javascript(无jquery)将数据发送到python-cgi脚本以从浏览器进行处理

您正在执行的HTTP请求在自己的时间内发生。对httprequest.send()的调用启动操作,但该函数调用几乎立即返回,而且肯定在远程服务器响应之前返回。这种异步行为是JavaScript环境中的一个基本事实。

"onload"回调的全部原因是,当HTTP请求实际完成时,您可以编写代码。当结果可用时,浏览器将使用结果调用该函数。这可能需要100毫秒,或者10秒;这完全取决于服务器和网络。