【问题标题】:Can't write text sent by javascript to a .txt file using python cgi无法使用 python cgi 将 javascript 发送的文本写入 .txt 文件
【发布时间】:2025-12-29 09:50:11
【问题描述】:

我在尝试将从 javascript 发送的字符串变量写入 cgi 中的 .txt 文件时遇到错误。这是有错误的python cgi代码:

          1  #!/usr/bin/python
          2
          3 import cgi, cgitb
          4 cgitb.enable()
          5
          6 print "Content-type: text/html"
          7 print
          8
          9 print "<html><head><title>Nimed</title></head><br/>"
         10  
         12 formdata = cgi.FieldStorage()
         13 tulemused = formdata.getvalue('tulemused')
         14 f = open('/home/t103692/public_html/prax3/tulemused.txt', 'a')
    =>   15 f.write(tulemused)
         16 f.close()
    f = <open file '/home/t103692/public_html/prax3/tulemused.txt', mode 'a'>, f.write =      <built-in method write of file object>, tulemused = None

    <type 'exceptions.TypeError'>: expected a character buffer object 
          args = ('expected a character buffer object',) 
          message = 'expected a character buffer object'

这是我发送变量的 javascript 代码:

    function saadaTulemused() {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("POST","http://dijkstra.cs.ttu.ee/~t103692/cgi-bin/save.py", true);
    xmlhttp.setRequestHeader("content-type","application/x-www-form-urlencoded");
    xmlhttp.send(tulemused);
    }

“tulemused”是字符串变量,已经包含了一些没有空格的文本。

我该如何解决这个错误?

【问题讨论】:

    标签: javascript python xmlhttprequest cgi


    【解决方案1】:

    tulemusedNone,您不能将其写入文件。

    您实际上需要从您的 JavaScript 处理程序发送 x-www-form-urlencoded 数据;目前您只发送值而不发送其他任何内容。

    在字符串前面加上'tulemused=' 就足够了:

    xmlhttp.send("tulemused=" + tulemused);
    

    【讨论】:

    • 非常感谢!终于搞定了,想了好几天了。