2013-08-23 20 views
0

我想用JSON來管理客戶端/服務器之間的數據。然而,除了JSON之外,一切都能正常工作...... 我認爲它來自我的python服務器,但我不是服務器編程的專家,所以我真的不知道如何在我的python服務器中進行更改。我的python服務器非常簡單,因爲我真的不知道如何編程。 如果我不使用JSON,它可以很好地工作,但是對數據進行排序並不是很有效。 有沒有一種簡單的方法來修改我的python服務器接受json(如果它來自python服務器)?Python服務器不接受jQuery發送的JSON ajax

這裏是我的html:

<form method="post" id="formu" > 
     <textarea class="field span10" id="sequence" name="sequence" cols="4" rows="5"></textarea> 
     <input type="submit" value="Submit" class="btn btn-primary"> 
</form> 

我的javascript:

$(document).ready(function() { 
      // formular 
      $('#formu').on('submit', function(e) { 
       e.preventDefault(); // Prevent default behavior 
       var sequence = $('#sequence').val(); 

       $.ajax({ 
          url  : 'test.py', 
          type : 'post', 
          data : JSON.stringify({'sequence' : sequence}), 
          dataType: 'json', 
          success : function(data){ 
            alert(data); 
             } // end of success function 
         }); // end of ajax 

      }); 
     }); 

我對AJAX(test.py)Python代碼:

import json 
result = {'myresult':'lalalalalal'}; 

myjson = json.load(sys.stdin) 
result['fromclient'] = myjson['sequence'] 
print 'Content-Type: application/json\n\n' 
print json.dumps(result) 

我的蟒蛇服務器:

#!/usr/bin/python 

import BaseHTTPServer 
import CGIHTTPServer 
import cgitb; cgitb.enable() 
import mimetypes 

mimetypes.add_type("image/svg+xml", ".svg", True) 
mimetypes.add_type("image/svg+xml", ".svgz", True) 
mimetypes.add_type("application/javascript", ".js", True) 
mimetypes.add_type("text/javascript", ".js", True) 
mimetypes.add_type("text/plain", ".txt", True) 
mimetypes.add_type("text/html", ".html", True) 
mimetypes.add_type("application/perl", ".pl", True) 
mimetypes.add_type("application/json", ".json", True) 




server = BaseHTTPServer.HTTPServer 
handler = CGIHTTPServer.CGIHTTPRequestHandler 
server_address = ("127.0.0.1", 8080) 
#handler.cgi_directories = ['/FOLDOMEweb'] 
handler.cgi_directories = ['/WEBSERVER'] 
httpd = server(server_address, handler) 

try:  
    print "Running HTTP server" 
    httpd.serve_forever() 
except KeyboardInterrupt: 
    print "Server Stoped" 
+1

您正在混合CGI和一個長時間運行的守護進程Web服務器。你打算如何運行你的網絡服務器? –

+0

我只在我的shell上運行帶有「python myserver.py」的python服務器,它除了JSON外都可以工作。在我可以在本地主機上打開後.../mypage.py – user1731699

+0

你沒有描述過任何「不起作用」的含義。什麼地方出了問題,以及在哪裏,在什麼情況下,你期望在那裏發生什麼? – abarnert

回答

1

不要使用

data : JSON.stringify({'sequence' : sequence}) 

和對象傳遞給jQuery的AJAX調用。它會處理格式本身。記住表單值包含名稱,值對 - 所以讓jQuery爲你做。

+0

但如果我想給其他參數,如{序列':序列,'secondarg':「mysecondarg」}怎麼辦?如果我刪除這條線,它仍然不起作用。 Json不起作用。如果我不使用Json,那爲什麼呢? – user1731699

+0

用你需要的任何屬性定義對象 - 然後在'data'參數中傳遞它 – leon