2

我在尝试将从 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”是字符串变量,它已经包含一些没有空格的文本。

我该如何解决这个错误?

4

1 回答 1

2

tulemusedNone并且您不能将其写入文件。

您需要x-www-form-urlencoded从 JavaScript 处理程序实际发送数据;目前你只发送价值,没有别的。

为字符串加上前缀'tulemused='应该就足够了:

xmlhttp.send("tulemused=" + tulemused);
于 2012-11-24T17:30:31.500 回答