Понимание того, как использовать CGI и POST - PullRequest
0 голосов
/ 01 октября 2011

Я пытаюсь понять, как я могу использовать Python и javascript, чтобы я мог использовать команды POST / GET.У меня есть кнопка, которая отправляет запрос на серверный Python, и должен вернуть значение.Я понимаю, как распечатать ответ, но я хочу передать значение в переменную javascript, а не просто напечатать вещь в ответе.

Например, мой javascript отправляет строку в файл python с помощью jquery POST функция:

 <script>               
    function send(){

        $.ajax({ 
            type: "POST",
            url: "pythondb.py", 
            data:{username: 'william'},  
            async: false,
            success: function(){  
                alert('response received')              
            }, 
        dataType:'json'
        }); 
    }
  </script>

Затем с помощью модуля Python CGI я могу распечатать значение username:

#!/usr/bin/env python
import cgi
print "Content-Type: text/html"
print
form = cgi.FieldStorage()
print form.getvalue("username")

, однако я не получаю данные таким же образомчто функция php echo работает.Есть ли эквивалент 'echo' для модуля Python CGI?

Я прочитал этот вопрос , который объясняет различные среды Python, которые могут использоваться для связи между браузером и сервером;на данный момент я надеялся сделать все как можно проще и использовать модуль cgi, но я не знаю, является ли это лучшим вариантом.

Ответы [ 2 ]

1 голос
/ 01 октября 2011

Ваша функция success: может принимать параметр, которому jQuery будет передавать содержимое ответа от запроса AJAX.Попробуйте это и посмотрите, что произойдет:

 <script>               
    function send(){

        $.ajax({ 
            type: "POST",
            url: "pythondb.py", 
            data:{username: 'william'},  
            async: false,
            success: function(body){  
                alert('response received: ' + body);              
            }, 
            dataType:'json'
        }); 
    }
  </script>

PS Почему вы используете async: false?Этот тип побеждает большую часть AJAX.

0 голосов
/ 08 июля 2014

Ваш json не в правильном формате json.

Согласно http://api.jquery.com/jquery.parsejson/,

  • имя пользователя должно быть в кавычках
  • вы можете толькоиспользуйте двойные кавычки

Это будет выглядеть так:

{"username": "william"}

Кроме того, ваше оповещение должно иметь точку с запятой в конце.Я не могу гарантировать, что этот ответ решит вашу проблему, но, возможно, ваши данные вообще не передаются в cgi.

...