Сервер Python не принимает JSON, отправленный jquery ajax

Я хотел бы использовать JSON для управления данными между клиентом/сервером. Тем не менее, все работает, кроме JSON... Я думаю, что это исходит от моего сервера python, но я не специалист по серверному программированию, поэтому я действительно не знаю, как меняться на моем сервере python. Мой сервер python действительно прост, потому что я действительно не знаю, как программировать внутри. Если я не использую JSON, он работает отлично, но не очень эффективно сортировать данные. Есть ли простой способ изменить мой сервер python, чтобы принять json (если он исходит от сервера python)?

Вот мой html:

<form method="post" id="formu">
 
 
</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

 });
 });

Мой код python для ajax (test.py):

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)

И мой сервер python:

#!/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 ответ

Не использовать

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

и передать объект в jQuery ajax-вызов. Он будет обрабатывать само форматирование. Помните, что значения формы состоят из пар имен, значений, поэтому пусть jQuery сделает это за вас.

licensed under cc by-sa 3.0 with attribution.