Avatar billede Esbjergmus Nybegynder
16. december 2011 - 19:42 Der er 3 kommentarer og
1 løsning

JSON chat .

Hej.

Jeg er i gang med at lave en JSON anmodning til chat fra en gæst til et medlem.

Det virker allerede.

Og hvis der er flere gæster der har anmodet om chat med samme medlem. Eks. bare 2. Så kommer der to popup beskeder, ovenover hinanden, som det skal.

Godkender jeg den ene, og vil godkende den anden også, for at kunne besvare begge to med det samme. Så går den sidste jeg godkendte, ind og åbner i samme chat vindue, og den gamle chat-samtale forsvinder. Hvordan laver man så den åbner et nyt til hver man godkender samtale med..

Er ikke sikker på hvilken del af mit script i skal bruge.


Dette er den der giver medlemmet besked om anmodning.

<script type="text/javascript">
    $(
            function()
            {
                watchforGuests();
            }
    );
    function watchforGuests() {
        $.post("/guestchat/guestWatch.php?session=<?=$session['sessionID']?>", function (data) {
            json = $.parseJSON(data);
            if (json['incomming']) {
                for ( var i in json['chats'] ) {
                    if ($("#chat_"+json['chats'][i]['id']).length == 0) {
                        $("#chatWatcher").append("<div id='chat_"+json['chats'][i]['id']+"' class='chatRequest'><b>"+json['chats'][i]['navn']+" vil chatte med dig!</b><br><a onclick='accept("+json['chats'][i]['id']+");'>Godkend anmodning</a> - <a onclick='deny("+json['chats'][i]['id']+");'>Afvis anmodning</a></div>");
                        $.sound.play("/guestchat/chatInc.wav");
                    }
                }
            }
            setTimeout("watchforGuests()", 5000);
        });
    }
    function accept (sessionId) {
        $("#chat_"+sessionId).hide("slow", function () { $("#chat_"+sessionId).remove(); });
        newwindow=window.open('/guestchat/member.php?session='+sessionId,'memberChat','height=500,width=500', 'resizable=no');
        if (window.focus) {newwindow.focus()}
        return false;
    }
    function deny (sessionId) {
        $("#chat_"+sessionId).hide("slow", function () { $("#chat_"+sessionId).remove(); });
        $.post("/guestchat/guestWatch.php?action=denyChat&session="+sessionId);
    }
</script>

Den her del er i member.php

<?
include("core.php");
include("chatTop.php");
if ($_GET['session'] != '' and is_numeric($_GET['session'])) {
    $session = getSessionDataMember(mysql_real_escape_string($_GET['session']));
    if (is_array($session)) {
        // Got valid session from current member! Display the chat window.
        ?>
        <script type="application/javascript" src="jquery1.6.1.js"></script>
        <script>
        var status = 0;
        var lastMsgId = 0;
        $(
            function()
            {
                chatManager();
                $("[id*=msg]").keydown(function(e) {
                    if (e.keyCode == 13) {
                    sendMsg();
                    }
                }
            );
        });
        function sendMsg() {
            text = $("[id*=msg]").val();
            if(text != '' && text != ' ') {
                text = encodeURIComponent(text);
                $("[id*=msg]").val("Sender vent venligst...").attr({disabled : "true"});
                $.post("msgHandler.php?sender=member&session=<?=$session['sessionID']?>", "msg="+text, function (data) {
                    $("[id*=msg]").val('').removeAttr("disabled").focus();
                });
            }
        }
        function chatManager() {
            if (status != 404) {
                $.post("chatManager.php?sender=member&session=<?=$session['sessionID']?>", "lastMsgId="+lastMsgId, function (data) {
                    json = $.parseJSON(data);                   
                    if (status == 0) {
                        for ( var i in json['msg'] ) {
                            $(".msgArea").prepend("<b>" + json['msg'][i]['name'] + "</b> " + json['msg'][i]['msg'] + "<br>");
                        }
                        lastMsgId = json['lastMsgId'];
                        if (json['chatEnd']) {
                            alert("Gæsten lukkede chatten");
                            $("#send_controls").hide();
                            $(".msgArea").prepend("<em>Chatten blev afsluttet</em><br><br>");
                            status = 404;
                        }
                    }
                });
                setTimeout("chatManager()", 1500);
            }
        }
        </script>
        <div class='chatBox msgArea'><br><em>Chat med <?=$session['guestName']?> startet</em></div>
        <center><a href="java script:$.post('chatManager.php?endChat=true&session=<?=$session['sessionID']?>&part=member');window.opener='x';window.close();" style="text-decoration: none; color:#FFF;">Afslut chatten</a></center>
        <div id="send_controls" class="chatBox"><textarea id="msg" style="width:98%;" rows="4"></textarea><input type="button" value="Send" onClick="sendMsg();" id="sendButton" style="width:100%;"></div>
        <?       
    } else {
        echo "<div class='chatBox'><center><b>Adgang nægtet!</b><center></div>";
    }   
}
?>

Håber i kan hjælpe mig. vil være dejligt at få den del til at virke. :)
Avatar billede tjens Nybegynder
17. december 2011 - 09:55 #1
Jeg tror det er parameter 2 "name" i window.open, der skal være forskellig:

        newwindow=window.open('/guestchat/member.php?session='+sessionId,'memberChat','height=500,width=500', 'resizable=no');

'memberChat' skal ændres til  'memberChat'+sessionId eller noget andet entydigt
Avatar billede Esbjergmus Nybegynder
17. december 2011 - 10:18 #2
+sessionId er ikke det samme, når først en har anmodet, har den sat et session, som eks fra: 1, og hvis der har været 400 samtaler, får den næste sessionId 401.

Så derfor jeg ikke forstår det.
Avatar billede Esbjergmus Nybegynder
17. december 2011 - 10:23 #3
Arh det virkede faktisk :)
Bare mig der ikke helt forstod det, da jeg lige er stået op :)
Men fik det skrevet ind, og testede fra 2 browsere til det medlem, og der blev åbnet op for 2 vinduer. :)

Så mange tak.

Skriv for at få points, og god weekend :)
Avatar billede tjens Nybegynder
17. december 2011 - 11:56 #4
Selv tak, og god weekend til dig også.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester