Avatar billede jenshenrik Nybegynder
26. marts 2013 - 15:23 Der er 2 kommentarer

IE8 double poster i Ajax script

Hej.
Jeg har problemer med et script, jeg har modificeret fra den dengang eksisterende linuxuser.at og puttet ind på en PHPBB3 side.

Når enkelte brugere poster formen, bliver der skrevet 2 entries.
Det er som om eventhandleren trilles afsted 2 gange og ikke sættes til "true", når der er skrevet.

Fandt lidt info her, men kan ikke helt se, hvor jeg skal sætte ind...
http://www.vbforums.com/showthread.php?625381-RESOLVED-IE8-making-duplicate-entries-in-database

Mit script ser således ud:

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
/**
*
* @package phpBB3
* @version $Id$
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

$mode = request_var('mode', '');
if ($user->data['username'] == 'Anonymous'){
//echo '<meta http-equiv="REFRESH" content="0;url=http://'.$_SERVER['SERVER_NAME'].'">';
exit;
}

?>


<!-- START HERFRA -->

        <div id="content">
            <p id="chatwindow"> </p>
            <div style="position:absolute;bottom:0;>
            <input id="chatnick" type="hidden" size="11" maxlength="9" value="<?php echo $user->data['username'];?>">
            <input id="chatmsg" type="text" size="30" maxlength="65"  onmouseover="chatmsg.focus();" onclick="chatmsg.focus();" onkeyup="keyup(event.keyCode);return ismaxlength(this);">
            <input type="button" value="Skriv!" onclick="submit_msg();" style="cursor:pointer;border:1px solid gray;">
            </div>
<!--            <textarea id="chatwindow" rows="19" cols="95" readonly>
Avatar billede jenshenrik Nybegynder
26. marts 2013 - 15:24 #1
<!-- START HERFRA -->

        <div id="content">
            <p id="chatwindow"> </p>
            <div style="position:absolute;bottom:0;>
            <input id="chatnick" type="hidden" size="11" maxlength="9" value="<?php echo $user->data['username'];?>">
            <input id="chatmsg" type="text" size="30" maxlength="65"  onmouseover="chatmsg.focus();" onclick="chatmsg.focus();" onkeyup="keyup(event.keyCode);return ismaxlength(this);">
            <input type="button" value="Skriv!" onclick="submit_msg();" style="cursor:pointer;border:1px solid gray;">
            </div>
<!--            <textarea id="chatwindow" rows="19" cols="95" readonly></textarea><br>
-->
        </div>

<script type="text/javascript">
function ismaxlength(obj){
var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
if (obj.getAttribute && obj.value.length>mlength)
obj.value=obj.value.substring(0,mlength)

if (obj.value.length>=mlength){
obj.style.backgroundColor="yellow";
}

if (obj.value.length<mlength){
obj.style.backgroundColor="white";
}

}
</script>

<script type="text/javascript">

document.oncontextmenu = function(){return false}
if(document.layers) {
    window.captureEvents(Event.MOUSEDOWN);
    window.onmousedown = function(e){
        if(e.target==document)return false;
    }
}
else {
    document.onmousedown = function(){return false}
}

/* Settings you might want to define */
    var waittime=1200;

/* Internal Variables & Stuff */
    //chatmsg.focus()
    document.getElementById("chatwindow").innerHTML = "Henter data<br /><img src=/images/progress.gif>";

    var xmlhttp = false;
    var xmlhttp2 = false;


/* Request for Reading the Chat Content */
function ajax_read(url) {
    if(window.XMLHttpRequest){
        xmlhttp=new XMLHttpRequest();
        if(xmlhttp.overrideMimeType){
            xmlhttp.overrideMimeType('text/xml');
        }
    } else if(window.ActiveXObject){
        try{
            xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            try{
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e){
            }
        }
    }

    if(!xmlhttp) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }

    xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState==4) {
        document.getElementById("chatwindow").innerHTML = xmlhttp.responseText;

        zeit = new Date();
        ms = (zeit.getHours() * 24 * 60 * 1000) + (zeit.getMinutes() * 60 * 1000) + (zeit.getSeconds() * 1000) + zeit.getMilliseconds();
        intUpdate = setTimeout("ajax_read('/viffertalk/chat.txt?x=" + ms + "')", waittime)
        }
    }

    xmlhttp.open('GET',url,true);
    xmlhttp.send(null);
}

/* Request for Writing the Message */
function ajax_write(url){
    if(window.XMLHttpRequest){
        xmlhttp2=new XMLHttpRequest();
        if(xmlhttp2.overrideMimeType){
            xmlhttp2.overrideMimeType('text/xml');
        }
    } else if(window.ActiveXObject){
        try{
            xmlhttp2=new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            try{
                xmlhttp2=new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e){
            }
        }
    }

    if(!xmlhttp2) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }

    xmlhttp2.open('GET',url,true);
    xmlhttp2.send(null);
}

/* Submit the Message */
function submit_msg(){
    nick = document.getElementById("chatnick").value;
    msg = document.getElementById("chatmsg").value;

    if (nick == "") {
        check = prompt("please enter username:");
        if (check === null) return 0;
        if (check == "") check = "anonymous";
        document.getElementById("chatnick").value = check;
        nick = check;
    }

    document.getElementById("chatmsg").value = "";
    ajax_write("chatscript.php?m=" + msg + "&n=" + nick)
}

/* Check if Enter is pressed */
function keyup(arg1) {
    if (arg1 == 13) submit_msg();
}

/* Start the Requests! ;) */
var intUpdate = setTimeout("ajax_read('chatindhold.txt')", waittime);

</script>
Avatar billede olebole Juniormester
26. marts 2013 - 16:16 #2
<ole>

Det er næppe dén kode, der er skyld i dobbelt posting. Prøv at lægge et link til siden

/mvh
</bole>
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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