Jump to content
MK2

Notificações/Refresh

Recommended Posts

MK2

Boas..

Tenho um problema..

Num site em que tenho o index, tenho uma tabela.

Numa das linhas da tabela tenho um include para aparecer o que está na página menu...

O menu tem um separador que diz "Mensagens (0)".

Após eu enviar uma mensagem para um certo utilizador queria que o "Mensagens (0)" aumentasse o 0 sem que tenha de fazer um refresh à pagina inteira...

À pagina toda já consegui mas o problema é que eu tenho duas iframes e elas voltam para a página por defeito..

Aquilo que eu queria era que ele só fizesse um refresh ao menu ou então (não sei se é possível) fazer um refresh ao resultado da query...

:)


Cumps;Mk2_______________________________________________Se não fosse o C estaríamos a usar Pasal, obol e Basi ...

Share this post


Link to post
Share on other sites
cristiano09

Sim, concordo.

Iria dizer-te para utilizares Javascript, mas vai de encontro ao que o Lfscoutinho disse.

Share this post


Link to post
Share on other sites
MK2

Pois, tenho de pesquisar sobre isso... A unica coisa com que já trabalhei foi php e html mais aprofundado.. JavaScript só um bocadito... Não muito....

Mas obrigado, vou ver o que consigo fazer daí... Depois digo como correu

;D

Já agora, há algum termo mais técnico para esse tipo de funções para eu não ter que andar a inventar pesquisas e a bater com a cabeça nas paredes?


Cumps;Mk2_______________________________________________Se não fosse o C estaríamos a usar Pasal, obol e Basi ...

Share this post


Link to post
Share on other sites
brunoais

XMLHttpRequest()

Eu prefiro ser eu mesmo a escrever o js para as coisas mais simples como esta.

O jQuery é bom e está bem feito mas acho q, para coisas simples, ele é demasiado lento.


"[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
mAiN_iNfEcTiOn

XMLHttpRequest()

Eu prefiro ser eu mesmo a escrever o js para as coisas mais simples como esta.

O jQuery é bom e está bem feito mas acho q, para coisas simples, ele é demasiado lento.

:) São preferências...

Eu prefiro fazer:

<script type="text/js">
$(function(){
    $('#botao').click(function(){

        $.ajax({

            url: 'script.php',
            cache: false,
            type: 'post',
            dataType: 'json',
            data: 'id=1',
            success: function(response){
                if( response.status == 'OK' )
                    alert(response.message);
                else
                    alert(response.error);
            }
        });

    });
});
</script>

É um exemplo fatela, mas tem com certeza menos linhas do que uma declaração de um XMLHttpRequest continuamente... Agora dizes "Ah faço uma função que só lhe passo os parâmetros e ele faz isso e tem menos linhas"... Pois, mas isso eh o que o JQuery faz... Só que tem mais coisas que, mais tarde ou mais cedo usas...

Share this post


Link to post
Share on other sites
MK2

Ok... Não consigo perceber o código...

O que é suposto pôr no:

url: 'script.php',

cache: false,

type: 'post',

dataType: 'json',

data: 'id=1',


Cumps;Mk2_______________________________________________Se não fosse o C estaríamos a usar Pasal, obol e Basi ...

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Eu também prefiro usar jQuery. Até porque mais tarde podes vir a precisar de implementar jQuery, então não vais ter que passar o que tens em javascript "normal" para jQuery ou deixar as duas coisas, que na minha opinião dá mau aspecto e não tem cabimento. Para além disso, temos que pensar que o que estamos a fazer hoje, amanhã poderá vir a ser editado por outra pessoa e essa pessoa pode não ter os mesmos conhecimentos que nós, por isso devemos optar pelo mais fácil e para mim, acho que é mais fácil uma pessoa com poucos conhecimentos de JS perceber jQuery do que o método natural do JS.

Quanto à tua dúvida, MK2:

Vê esta página: http://api.jquery.com/jQuery.ajax/

url = Página que mostra apenas o número de mensagens (podes ter uma página completa e depois usares umas funções para ires buscar apenas o que está dentro de uma dada div, mas como é novato, o melhor é criares uma página que apenas mostra o número de mensagens)

type = O método pelo qual queres enviar os parâmetros (POST/GET)

dataType = É a forma com vais enviar os parâmetros

data = São os parâmetros

Share this post


Link to post
Share on other sites
ruimcosta

Sou fã do jquery.

Depois de aprenderes o seu funcionamento, podes utilizar este site: www.visualjquery.com apenas para veres funçoes e parâmetros necessários.


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Só uma pequena correcção:

dataType = É a forma com vais enviar os parâmetros

o atributo dataType define o tipo de conteúdo que vais RECEBER do servidor. Citando o JQuery:

The type of data that you're expecting back from the server. If none is specified, jQuery will try to infer it based on the MIME type of the response (an XML MIME type will yield XML, in 1.4 JSON will yield a JavaScript object, in 1.4 script will execute the script, and anything else will be returned as a string). The available types (and the result passed as the first argument to your success callback) are:

"xml": Returns a XML document that can be processed via jQuery.

"html": Returns HTML as plain text; included script tags are evaluated when inserted in the DOM.

"script": Evaluates the response as JavaScript and returns it as plain text. Disables caching unless option "cache" is used. Note: This will turn POSTs into GETs for remote-domain requests.

"json": Evaluates the response as JSON and returns a JavaScript object. In jQuery 1.4 the JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown. (See json.org for more information on proper JSON formatting.)

"jsonp": Loads in a JSON block using JSONP. Will add an extra "?callback=?" to the end of your URL to specify the callback.

"text": A plain text string.

multiple, space-separated values: As of jQuery 1.5, jQuery can convert a dataType from what it received in the Content-Type header to what you require. For example, if you want a text response to be treated as XML, use "text xml" for the dataType. You can also make a JSONP request, have it received as text, and interpreted by jQuery as XML: "jsonp text xml." Similarly, a shorthand string such as "jsonp xml" will first attempt to convert from jsonp to xml, and, failing that, convert from jsonp to text, and then from text to xml.

O envio dos dados é em formato normal do protocolo HTTP (não sei a norma RFC em vigor, sorry :) ) que é variavel=valor&variavel2=valor2&variavelN=valorN

Share this post


Link to post
Share on other sites
ruimcosta

MK2:

Nessa situação, até o envio da própria mensagem terá de ser feita por jquery/ajax, caso contrário se efectuas o envio da mensagem pelo método "normal", que é reencaminhar para um ficheiro envio_msg.php e voltando de novo ao mesmo ficheiro, já terias o número de mensagens incrementado, certo?

Então, terás de efectuar uma chamada assíncrona ao servidor para enviares a mensagem e incrementar o número de mensagens sem fazer o refresh.

Para isso, no botão que clicas para fazer o enviar, podes por exemplo atribuir-lhe um id.

<input type="button" value="Enviar Mensagem" id="btn_enviamsg" />

Assim, mais abaixo, inseres isto:

<script>
$(document).ready(function() {
    $("btn_enviamsg").click(function(e){
        e.preventDefault();
        
        $.post(
            "envia_msg.php", // Ficheiro que irá enviar a mensagem
            { 
                titulo: $("input[name=txttitulomsg]").val(), //txttitulomsg = name que está na linha <input type="text name="txttitulomsg" />
                msg: $("input[name=txtmsg]").val(),
            },
            function(data) {
                // variavel data, irá guardar o retorno do ficheiro envia_msg.php
                // Se nesse ficheiro meteres um echo 'qualquer coisa'; e aqui neste local meteres um alert(data); irá aparecer o que meteste no echo
                alert(data);
                
                // Agora para incrementares o nº de mensagens
                $("#id_da_div_que_tem_o_numero_de_mensagens").html($("#id_da_div_que_tem_o_numero_de_mensagens").html()+1);
            }
        );
    }); 
});
</script>

Terás de adaptar ao teu exemplo específico, e conseguirás facilmente implementar essa questão.

Não te esqueças que entre o <head></head> do teu site, chamares o jquery.


Abraços e beijinhos,Rui Costa

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.