2010-11-30 15 views
5

He examinado las API y todo tipo de recursos, pero parece que no puedo acostumbrarme a buscar un objeto JSON desde un script de Python usando AJAX. Estoy seguro de que el problema está en cómo estoy lidiando con el objeto JSON.¿Cómo puedo enviar un objeto JSON desde un script de Python a jQuery?

En primer lugar, en una secuencia de comandos Python en mi servidor, yo generar e imprimir una matriz JSON

import json 
print "Content-type: application/json" 
print 
print json.dumps(['Price',{'Cost':'99'}]) 

Luego, en un archivo HTML independiente, trato algo así como

<body> 
<div id="test"> 
</div> 

<script> 
$(document).ready(function() { 
    $.getJSON("http://www.example.com/cgi-bin/makeJSON.py", function(data) { 
     $('#test').html("JSON Data: " + data.Price); 
    }); 
}); 
</script> 
</body> 

Pero Don obtener algo Estoy seguro de que data.Price está mal, pero también estoy bastante seguro de que debería estar haciendo algo en lugar de simplemente imprimir los resultados de json.dumps

¡Se agradece cualquier ayuda! Gracias de antemano, y lo siento si esta es una pregunta obvia.

Respuesta

6

En su caso, ha adjuntado la respuesta JSON en un array. Para acceder al precio, debe acceder al data[0]. Necesita estructurar sus datos JSON correctamente.

Los siguientes cambios en su secuencia de comandos de Python deberían permitirle acceder al data.Price. Avísame en caso de que aún tengas problemas.

import json 
    print "Content-type: application/json" 
    print 
    response={'Price':54,'Cost':'99'} 
    print(json.JSONEncoder().encode(response)) 
+0

Gracias, philar! ¡Los datos [0] funcionan! – Parker

+0

No hay problema, pero necesitamos estructurar correctamente los datos JSON de respuesta. Digamos que tanto 'Price' como' Cost' son claves simples en un diccionario python, cuando se envía al cliente se puede acceder usando 'data.Price' y' data.Cost' respectivamente. – Philar

+0

Ahhh, eso resuelve todo, ¡gracias por señalar eso! – Parker

1

Proporcione más contexto a lo que está tratando de hacer. ¿Puedes codificar el objeto JSON en el HTML? O bien, ¿estás tratando de hacer algo más dinámico, como AJAX?

Para el primero, vea el código fuente HTML de la página que Python genera. Debe ser algo como:

<script type="text/javascript"> 
    var MY_GLOBAL_JSON_OBJECT = { ... }; 
</script> 

O simplemente podría escupir el objeto JSON dentro de la función que ha de utilizarlo en lugar de asignar en primer lugar a una variable global.

+0

Gracias Matt! Obtuve el guión devolviendo el objeto JSON correcto. Y sí, es dinámico, así que no puedo codificarlo. El único problema ahora es que no sé cómo acceder a los valores almacenados, ya que 'data.Price' no funciona – Parker

Cuestiones relacionadas