@Urbansamurai

Как передать CGI скрипту на питоне JSON объект из JavaScript?

Перегуглил всё, вроде разобрался что такое JSON, но решения так и не нашел.

Пытался использовать myjson = json.load(sys.stdin) такой метод – не помогло.

Задача простая: передать питону AJAX-ом массив данных.
  • Вопрос задан
  • 1541 просмотр
Решения вопроса 1
@Urbansamurai Автор вопроса
Всё заработало в таком виде:

JS:

function mix()
        {
        
            $.ajax({
                url: "cgi-bin/test.py",
                type: "post",
                data: JSON.stringify({'letters':letters,'intervals':intervals}),
                dataType: "json",
                success : function(response)
                {
                    $("#div").html(response);
                }
            });
            
        };


Python:

import json, sys

result = "success"

myjson = json.load(sys.stdin)
print myjson
# Do something with 'myjson' object

print 'Content-Type: application/json\n\n'
print json.dumps(result)    # or "json.dump(result, sys.stdout)"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Если у вас питон как CGI скрипт, то почему вы читаете из stdin?
Используйте FieldStorage https://docs.python.org/2/library/cgi.html
Ответ написан
valerium
@valerium
Изобретая велосипед
В модуле json есть две функции: load и loads. Первая принимает первым аргументом файлоподобный объект (грубо говоря, любой объект, имеющий метод read()), вторая принимает строку. Вангую, что проблема в этом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы