Datos POST a Python CGI script a través de jQuery AJAX

Estoy tratando de configurar un script simple donde se envían algunos datos utilizando la función jajyy .ajax a un script CGI de Python. La secuencia de comandos de Python solo haría que los datos publicados en mayúsculas, y luego los devolvería al archivo HTML, donde se actualizaría un div con el contenido.

Tengo el código que se muestra a continuación. Cuando lo ejecuto, la llamada AJAX se ejecuta, pero el div no se actualiza con el contenido. El div no se actualiza con los datos que se envían.

¿Cómo puedo modificar este código para que se actualice con los datos que se envían?

Aprecio cualquier ayuda en absoluto.

Mi código HTML:

    Python-jQuery Example   $(function() { $.ajax({ url: "http://localhost/cgi-bin/post.py", type: "post", datatype: "html", data: "here is data", success: function(response){ $("#div").html(response); console.log("There is a response"); } }); });    
Default Stuff

Mi código de Python:

 #!/usr/bin/python import cgi, cgitb cgitb.enable() data = cgi.FieldStorage() print "Content-Type: text/html" print data 

EDITAR: He actualizado mi código a lo que se muestra actualmente, y ahora el documento se actualiza con esta cadena:

 FieldStorage(None, None, []) 

¿Cómo puedo modificar mi código para que el div se actualice con los datos que se envían?

Creo que los “datos” dentro de $ .ajax deberían ser como un hash de un par clave-valor. tratar:

 $.ajax( .... data: { a: "aa", b: "bb" } ... 

Si ves en el div algo como:

 MiniFieldStorage('a', 'aa') 

Entonces deberías acceder a ella a través de:

 my_param = cgi.getfirst('a') print "Content-Type: text/html\n" print my_param 

Si aún no funciona, ¿puedes probarlo a través de GET en lugar de POST? Además, ¿cuál es la estructura de los archivos AJAX a los que está accediendo? (¿Está el archivo dentro de un subdirectorio? etc …)

Me di cuenta de que los datos deben formatearse como pares clave-valor, de este modo:

 $.ajax({ url: "http://localhost/cgi-bin/variousTests/post.py", type: "POST", data: {foo: 'bar', bar: 'foo'}, success: function(response){ $("#div").html(response); } }); 

En el script de Python, usé este código para obtener los datos de la solicitud POST (funciona exactamente de la misma manera si se usa una solicitud GET):

 #!/usr/bin/python import cgi, cgitb cgitb.enable() # for troubleshooting #the cgi library gets vars from html data = cgi.FieldStorage() #this is the actual output print "Content-Type: text/html\n" print "The foo data is: " + data["foo"].value print "
" print "The bar data is: " + data["bar"].value print "
" print data
  1. Creo que necesitas usar una nueva línea con el tipo de contenido de impresión.

    Imprimir “Tipo de contenido: texto / html \ n”

  2. Además, debe proporcionar el nombre del parámetro con sus datos variables. Suponiendo que está publicando el valor “xyz” con el parámetro “param”. Así que debería ser: datos [“param”] en donde reside el xyz.

    datos de impresión [“xyz”]

  3. Si el error persiste, navegue por la URL localhost / cgi-bin / post.py desde el navegador y verifique qué devuelve (con un parámetro GET para la prueba, por supuesto).