Jump to content
I-NOZex

[Resolvido] Opinião: Usar cookies ou data attribute para passar dados entre php e js

Recommended Posts

I-NOZex

Ora bem, surgiu-me aqui uma certa duvida...

preciso de pegar dados da base de dados para uma função em jquery

posso fazer de duas formas:

- ao gerar o html, tirar proveito do data-* attributes que o html5 trás (e depois na funçao jq aceder a esses atributos)

- usar uma cookie guardando os dados em array ou json (e na funçao jq, usando o plugin jquery-cookies, aceder a cookie)

qual das 2 formas é mais recomendada, mais eficiente?

obrigado (:

Edited by I-NOZex

B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
HappyHippyHippo

cookies é um método permanente de associar dados a um cliente, cliente esse que pode ter essa funcionalidade bloqueada.

se o objectivo é só fornecer informação ao JS, cookies será sempre a última opção.

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
I-NOZex

uhm estou a ver

sim é apenas fornecer informação ao js que ele irá acabar por processar.


B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
brunoais

Porque não escrever para uma variável no código fonte?

<script>
var usefulData = "<?= str_replace('"','\"', $data); ?>";
</script>

Nota: não testado.

Edited by brunoais
  • Vote 1

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
I-NOZex

Porque não escrever para uma variável no código fonte?

<script>
var usefulData = "<?= str_replace('"','\"', $data); ?>";
</script>

Nota: não testado.

nao porque o codigo é para uma função onclick generica, e da tag clicada, um <a> é que ele obtem os valores... mas obrigado pela dica ;)


B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
taviroquai

Que tipo de dados precisas passar?

Se for um valor apenas, podes usar a solução do brunoais.

Se for uma lista de dados, ou uma tabela, com php geras um JSON e colocas a url numa tag <script>.

Senak ainda podes carregar os dados por ajax depois do evento click.

Share this post


Link to post
Share on other sites
I-NOZex

Que tipo de dados precisas passar?

Se for um valor apenas, podes usar a solução do brunoais.

Se for uma lista de dados, ou uma tabela, com php geras um JSON e colocas a url numa tag <script>.

Senak ainda podes carregar os dados por ajax depois do evento click.

vou expor melhor o contexto da coisa

tenho 10 itens, vamos dizer que sao itens de uma playlist

ao clicar num deles, vao ser passados 3 dados para um função em js:

capa da musica

titulo - artista

link da musica para reproduzir no player

ajax nao "é viavel" quando posso aproveitar e fazer tudo com "uma só" query a base de dados...

a do brunoais nao me parece ser bem correcta para o caso...

provavelmente vou deixar em data attr, apenas pus em causa as cookies pois em data attr vai aumetar um pouco o html gerado, pq no total vai ser cerca de 3dados x 30 itens...


B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
taviroquai

tenho 10 itens, vamos dizer que sao itens de uma playlist

Se for uma lista de dados, ou uma tabela, com php geras um JSON

Então não geres a lista quando geras a pagina e carrega a lista (json) por ajax (hint: usa templates jQuery).

Share this post


Link to post
Share on other sites
brunoais

O que estás a indicar parece ser muito uma das coisas que eu estou a desenvolver agora (closed source && closed alpha).

Eu usei o método que indiquei para transferir muitos dados para o cliente para não ter que usar ajax e transfiro esses dados usando objectos e arrays (é o que é melhor opção para aquele caso específico).

Comigo funciona bem, mas não sei até que ponto tb funciona contigo.

  • Vote 1

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
taviroquai

@Inozed

Da forma como digo, em principio, ja nao precisas fazer a query quando geras a pagina; so fazes a query quando pedes o json por ajax.

@Brunoais

Se Forem poucos dados tb acho boa idea colocar inline na pagina HTML...

Share this post


Link to post
Share on other sites
I-NOZex

@Inozed

Da forma como digo, em principio, ja nao precisas fazer a query quando geras a pagina; so fazes a query quando pedes o json por ajax.

o problema é que eu posso obter aqueles dados logo a fazer a query para os itens a apresentar!!! escuso de fazer 30 querys escusadas...

@brunoais - peço desculpa mas eu acho que so agora analizei mesmo as potencialidades do teu codigo e defacto faz todo o sentido! guardar numa variavel array multidimensional resolve o meu problema como deve de ser!

peço novamente desculpa de nao a ter ja aceito como resposta, mas evidentemente nao será inline nem cookies que vou usar, mas sim a tua soluçao. obrigado novamente colega :thumbsup:


B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
taviroquai

Pode-se saber que solução foi essa? Normalmente partilham-se as soluções aqui no forum para que outros possam ver...


o problema é que eu posso obter aqueles dados logo a fazer a query para os itens a apresentar!!! escuso de fazer 30 querys escusadas...

Hmm... podes explicar porque é que terias que fazer 30 queries?

Share this post


Link to post
Share on other sites
I-NOZex

foi a soluçao do brunoais, se lesses tudo entenderias (...)

se usase ajax por cada item clicado, iria usar (ou ate nao, mas contando sempre o "pior" cenario) 30 queries (uma por cada item)


B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
taviroquai

@Inozed

Ah mas com apenas 1 chamada ajax obtinhas todos os dados... Queres um exemplo?

@brunoais

Engano meu peço desculpa. Esse tom de escrita é que nao me parece nada adequado para um moderador...

Share this post


Link to post
Share on other sites
I-NOZex

@Inozed

Ah mas com apenas 1 chamada ajax obtinhas todos os dados... Queres um exemplo?

acho que ainda nao apanhaste a minha logica.

ao renderizar a pagina, eu vou ter de fazer querys, logico, querys essas que tambem vao obter muitos dos dados que eu vou precisar para mandar para o player, ora se posso fazer logo tudo nessa query, para que tar a criar querys denscessarias, entendes?

ps: é I-NOZex e nao Inozed :thumbsup:


B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
pikax

Claro que consegues fazer tudo numa query, se souberes o que queres pedir, podes pedir o que quiseres, agora basta ver se e' a solucao mais pratica.


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
taviroquai

acho que ainda nao apanhaste a minha logica.

E eu acho que não apanhaste a minha :)

Ora vê estas 2 soluções... é claro que ambas têm as suas vantagens e desvantagens...

1º solução (old school) - exemplo com php porque não sei que linguagem usas no server...

<?php

// fazer queries para obter os dados...

?>
<html><head></head><body>

<!-- gerar a lista HTML bla bla bla... -->

<script>
// colocar o resultado das queries numa variavel javascript (duplicar os dados da tabela HTML)
// se forem muitos dados fica aqui uma coisa horrenda
</script>
</body></html>

2º solução - web app moderna

<?php

if ($_GET['quero_dados_ajax'])) {
// fazer as mesmas queries para obter os dados e devolver em JSON
// terminar execução
}

?>
<html><head></head><body>
<script>
// fazer a chamada em ajax para obter os dados e gerar a lista HTML (JS guru)
</script>
</body></html>

Agora... qual é a diferença em termos de fazer mais/menos queries para os mesmos dados?

Edited by taviroquai

Share this post


Link to post
Share on other sites
brunoais

Tem que fazer as queries em duplicado?

  • Vote 1

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
I-NOZex

aqui a unica duvida, era exclusivamente a forma de passar os dados php para o js... ajax é querys desnecessarias

cookies é para dados permanentes

inline gera demasiado html

a soluçao do brunoais é a mais acertada a meu ver, nesta situaçao...

Edited by I-NOZex

B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.