[JS&IE6] hidden form submit is wispelturig

Pagina: 1
Acties:

  • TheWickedD
  • Registratie: Juli 2002
  • Laatst online: 02-04-2024
Ik heb met javascript een browserappje geschreven die met het toetsenbord te besturen is. Ook submit ik bij elke navigatie actie wat shit naar een php-script, dat verder op de achtergrond zn werk doet (hij log de ontvangen shit). De applicatie hoeft alleen onder IE6 te werken.

Nu lijkt javascript wat wispelturig, vaak wordt het verborgen form helemaal niet gesubmit.
relevante code:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<script  type="text/javascript">
function navigate(e)
{
    var keynum = e.keyCode
    if (keynum==37)
    {
        formSubmit();
        window.location="vorige.php"
    }
    if (keynum==39)
    {
        formSubmit();
        window.location="volgende.php"
    }
    if (keynum==36)
    {
        formSubmit();
        window.location="home.php"
    }
}

function formSubmit()
{
    var json_data = mouseTracker().toJSONString();
    document.data.cursor.value = json_data;
    document.data.submit();
}
</script>
<form name="data" method="post" action="maaklog.php">
<input type="hidden" name="cursor">
</form>

Met deze code vertoond mijn log dus gaten, allen zo af en toe wordt er wat weggeschreven. dit ligt trouwens niet aan een fout in het PHP script, aangezien ik die uitgebreid doorgeblaft heb op het hoogste errorniveau.

Verder ook raar: als ik de submitfunctie verander in onderstaande werkt alles vlekkenloos.
JavaScript:
1
2
3
4
5
6
7
function formSubmit()
{
    var json_data = mouseTracker().toJSONString();
    document.data.cursor.value = json_data;
    document.data.submit();
    alert("submitted"); // alleen dit toegevoegd
}

Maar dit is geen doen natuurlijk, het stealthe is er nu wel af :P
Ook iet toevoegen in die functie zoals return true; ofzo heeft geen nut.
Weet iemand hoe ik dit betrouwbaar kan maken (en waarom het in godsnaam wél werkt als ik dat alertboxje toevoeg?) ~~ heeft het er soms iets mee te maken dat het submitten van het form nog niet klaar is als de browser al door is naar de volgende pagina en de actie dus niet wordt afgemaakt? zoja, hoe kan ik dit voorkomen?

Bedankt voor de hulp!!

  • André
  • Registratie: Maart 2002
  • Laatst online: 27-11 10:04

André

Analytics dude

Het lijkt er op dat je submit soms gecancelled wordt. Waarom doe je het niet met xmlHTTP, dat lijkt me veel betrouwbaarder en is er ook voor bedoeld.

  • TheWickedD
  • Registratie: Juli 2002
  • Laatst online: 02-04-2024
Bedankt voor de tip, werkt als een zonnetje! Weer wat geleerd, dit spul kende ik nog niet.
Voor zij die er iets aan zouden hebben, de werkende code vind je hieronder, en ook kun je het hidden formpje uit je html gooien (natuurlijk).

JavaScript:
1
2
3
4
5
6
7
8
function formSubmit()
{
    var json_data = mouseTracker().toJSONString();
    var xmlhttp =  new ActiveXObject("Microsoft.XMLHTTP");
    xmlhttp.open('POST','maaklog.php', true);
    xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xmlhttp.send('cursor=' + json_data);
}

[ Voor 8% gewijzigd door TheWickedD op 29-05-2007 16:59 ]