2011-05-22 14 views
5

¿Cuál es la mejor manera de pasar una gran cantidad de datos de un solo enlace? ¿Es algo así como una buena idea o hay una mejor manera?Pase muchos datos desde una sola etiqueta de ancla

<a href="{ 'id':'1', 'foo':'bar', 'something':'else' }" id="myLnk" > Click </a> 


$('#myLnk).click(function(event){ 
    event.preventDeafult(); 
    var data = $(this).attr('href') 
    console.log($.parseJSON(response)); 

}) 

¡Gracias!

+0

Para obtener la mejor respuesta posible, ¿puede darnos un poco más de contexto? Explica más sobre lo que sucede alrededor de este código, cómo los datos que he procesado y para qué se utiliza. – rzetterberg

+0

@Ancide, es solo una pregunta general. Realmente no estoy tratando de hacer nada específico. Me pregunto qué es la mejor práctica. – Pardoner

+0

Muy bien, por qué me pregunto es solo porque en este caso, dependiendo de cuál sea el contexto, hay diferentes respuestas. Lo cual funciona mejor dependiendo del contexto. – rzetterberg

Respuesta

13

La mejor manera de hacer esto es probablemente usar custom data attributes en su etiqueta de anclaje.

Por ejemplo:

<a href="#" data-json="{ 'id':'1', 'foo':'bar', 'something':'else' }">Click</a> 

A continuación, puede acceder fácilmente a estos datos desde el JavaScript utilizando la función jQuery data().

O, en lugar de agrupar todos los datos juntos en un solo bloque JSON, puede dividirlo en atributos separados:

<a id="myLnk" 
    data-id="1" 
    data-foo="bar" 
    data-something="else"> 

Estos se pueden recuperar usando jQuery así:

$("#myLnk").data("id") 
$("#myLnk").data("foo") 
$("#myLnk").data("something") 
+1

Gracias Chris (y html5), esto es exactamente lo que estaba buscando. – Pardoner

+0

Chris, mira mi nota a continuación para $ .data() ... Acabo de descubrirlo yo mismo, en realidad. –

+0

¿hay alguna forma de publicar los datos en otra página? ¿o es solo para ver los datos en la misma página? – danyo

1

El método recomendado es utilizar HTML5 data-* atributos:

<a href="#" id="myLnk" data-id="1" data-foo="bar" data-something="else">Click</a> 
0

Para agregar a las respuestas de Chris & MvChr, también puede hacer esto, aunque I odio usando comillas simples para los atributos:

<a href='#' data-json='{ "id":1, "foo":"bar", "something":"else" }'>Click</a> 

El motivo de esta sintaxis es que si lo cita correctamente, $ .data en jQuery funcionará automáticamente. De lo contrario, tiene que $ .parseJSON ($. Data (selector)) la información.

Cuestiones relacionadas