2

javascriptから送信された文字列変数をcgiの.txtファイルに書き込もうとしているときにエラーが発生しました。これはエラーのあるpythoncgiコードです:

          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-urlencodedJavaScriptハンドラーから実際にデータを送信する必要があります。現在、値を送信するだけで、他には何も送信しません。

文字列の前に'tulemused='付けるだけで十分です。

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