2011-07-08 136 views
6

Tengo un hash ruby ​​donde las claves son urls y los valores son enteros. Convierto el hash a JSON y me pregunto si podré enviar el JSON dentro de una url a través de una solicitud de AJAX y luego extraer ese JSON de un hash de params.¿Puedes enviar JSON a través de una url?

Además, voy a enviar un hash de rubí JSONified devuelto al cliente. Si tengo una devolución de llamada exitosa en mi función AJAX donde recibo los datos en una variable data, ¿cómo puedo analizar ese JSON con JQuery?

Háganme saber si debo ser más específico.

+0

Si está realizando solicitudes AJAX, ¿por qué no lo publica en lugar de enviar el JSON como parte de la URL ... – Endophage

+0

@Endophage si lo hice, entonces, ¿cómo accedería a JSON desde el servidor? –

Respuesta

10

Sí, puede hacerlo sin ningún problema. ¡No se necesita codificación/decodificación manual!

Su código sería así:

var jsonParam = '{"name":"Edgar"}'; //Sample json param 
$.ajax({ 
    ... 
    type: "get", //This sends in url 
    data: {jsonParam: jsonParam}, //This will encode your json for url automatically 
    dataType: "json", //With this the response will be automatically json-decoded! 
    success: function(response){ //Assuming your server output was '{"lastName":"Villegas"}' as string 
    alert(response.lastName); 
    } 
}); 

Como se puede ver, no era necesaria una codificación/decodificación manual. Jquery se encarga de todo!

Espero que esto ayude. Cheers

PD: Si, por alguna razón, necesitas codificar/decodificar tu json manualmente para url usa los métodos encodeURIComponent(string) y $.parseJSON(jsonString) de Javascript.

+0

espera, por lo que especifica 'dataType:" json "' No necesito analizar el JSON en el servidor? (por ejemplo, JSON.parse (json_here)). Además, si decido enviarlo como una solicitud POST en su lugar, ¿cómo accedería al JSON en el servidor en ruby? –

1

Sí, puede pasar el objeto json como un parámetro get o post.

Para analizar la cadena json utilizando Jquery, puede usar $ .parseJSON.

+0

Quise decir a través de la url en sí. Pero si lo hago y lo envío en la opción 'datos', ¿cómo lo accedería desde el controlador? –

+0

Depende del código del lado del servidor. Por ejemplo, en C# puede usar Request [elementName], o en la acción del controlador puede especificar el nombre exacto del parámetro que se completará automáticamente cuando se ejecute la acción. – ShankarSangoli

+0

@ShankarSangoli Funcionará, pero ¿es una buena práctica pasar el objeto JSON en los parámetros get/query? – Nitin

Cuestiones relacionadas