Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

AJAX blijft exceptions gooien

Pagina: 1
Acties:
  • 237 views

  • thriller
  • Registratie: Augustus 2003
  • Laatst online: 18:36
Ik ben momenteel aan het experimenteren met AJAX en wil gegevens door middel van AJAX opslaan. Nu wil dit niet lukken, omdat ik constant exceptions krijg en er eigenlijk niets gebeurt. Ik ben al de hele dag aan het zoeken naar het probleem, maar kan niets vinden. Hopelijk hebben jullie tips.


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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="../Stylesheet/verticaal.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../Javascript/prototype/prototype.js"></script>
<script type="text/javascript" src="test.js"></script>
<title>Test file</title>
</head>
<body bgcolor="#999999">
<div class="mediaBar" id="mediaBar"></div>
<div class="horizon">
<div class="vertical">
<div class="systemWorking" id="systemWorking">Loading...</div>
<div class="content" id="content"></div>
<div class="content_start" id="content_start">
<form action="index.php?link=1.5.3" method="post" name="check" id="check">
<table border="0" class="users">
<tr><td width="200" colspan="2">Dit is een test</td></tr>
<tr><td width="200" colspan="2">&nbsp;</td></tr>
<tr><td width="200">Naam: </td><td width="300"><input type="text" name="newNaam" id="newNaam" /></td></tr>
<tr><td width="200">Test: </td><td width="300"><input type="text" name="newTest" id="newTest" /></td></tr>
<tr><td>&nbsp;</td><td><a href="#" onclick="test()">testen</a></td></tr>
</table>
</form>
<p />
</div>
</div>
</div>
</body>
</html>


JavaScript:
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
32
33
34
 
function test() {
        new Ajax.Request('test2.php',{
                method: 'POST',
                parameters: {
                    naam : $('newNaam').value,
                    test : $('newTest').value
                },
                onCreate: function(){
                    new Effect.Opacity('content', { from: 1.0, to: 0.3, duration: 0.7 });
                    new Effect.toggle('systemWorking', 'appear');
                    $('mediaBar').innerHTML = 'Test (Create)';
                },
                onComplete: function() {
                    if(Ajax.activeRequestCount == 0){
                        new Effect.Opacity('content', { from: 0.3, to: 1, duration: 0.7 });
                        new Effect.toggle('systemWorking', 'appear');
                        $('mediaBar').innerHTML = 'Test (Complete)';
                    }
                },
                onSuccess: function(transport) {
                        var response = transport.responseText || "no response text";
                        $('mediaBar').innerHTML = 'Test (Success)' + response;
                },
                onFailure: function(){ 
                    $('mediaBar').innerHTML = 'Test (Failure)';
                },
                onException: function() {
                    $('mediaBar').innerHTML = 'Test (Exception)';
                }
            }
        );
        
    }


Ik gebruik overigens prototype om het me wat makkelijker te maken.

Het huidige resultaat is dus altijd Test (Exception)

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-11 09:49

Bosmonster

*zucht*

Ik zou je exception-object even bekijken (tweede argument volgens de documentatie). Daar staat als het goed is precies in wat er mis gaat, want dit is koffiedik kijken.

[ Voor 14% gewijzigd door Bosmonster op 17-06-2010 18:06 ]


  • dev10
  • Registratie: April 2005
  • Laatst online: 27-11 08:33
Fijn dat je weet dat er een exceptie gegooid wordt, maar kun je in de exceptie ook zien wat er verkeerd gaat?

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Zit het probleem dan misschien niet in de backend? En wat krijg je terug na een call? Kloppen de response headers?

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • thriller
  • Registratie: Augustus 2003
  • Laatst online: 18:36
Bosmonster schreef op donderdag 17 juni 2010 @ 18:06:
Ik zou je exception-object even bekijken (tweede argument volgens de documentatie). Daar staat als het goed is precies in wat er mis gaat, want dit is koffiedik kijken.
ah bedankt, zolang aan het zoeken geweest en die pagina niet gezien. Het ging dus fout met deze regel

new Effect.Opacity('content', { from: 1.0, to: 0.3, duration: 0.7 });

Nu deze uitstaat werkt het wel, alleen krijg ik nu geen response text.

JavaScript:
1
2
3
4
onSuccess: function(transport) {
                        var response = transport.responseText || "no response text";
                        $('mediaBar').innerHTML = 'Test (Success)' + response;
                },


Ik wil dat dit de parameters weergeeft, maar hoe doe ik dat? Nu komt er no response text te staan

Verwijderd

|| levert een boolean op. Dat is niet wat jij daar wilt.
JavaScript:
1
var response = transport.responseText ? transport.responseText : "no response text";

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Moet je op regel 5 en 6 niet value() gebruiken?
Verwijderd schreef op donderdag 17 juni 2010 @ 18:20:
|| levert een boolean op. Dat is niet wat jij daar wilt.
JavaScript:
1
var response = transport.responseText ? transport.responseText : "no response text";
Driewerf nonsens. Een "a || b" in javascript returnt a als (bool)a == true, en anders b.

[ Voor 82% gewijzigd door .oisyn op 17-06-2010 18:25 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

.oisyn schreef op donderdag 17 juni 2010 @ 18:23:
Driewerf nonsens. Een "a || b" in javascript returnt a als (bool)a == true, en anders b.
Dat krijg je dus als je te weinig met Javascript doet. I stand corrected :X

  • thriller
  • Registratie: Augustus 2003
  • Laatst online: 18:36
.oisyn schreef op donderdag 17 juni 2010 @ 18:23:
Moet je op regel 5 en 6 niet value() gebruiken?


[...]

Driewerf nonsens. Een "a || b" in javascript returnt a als (bool)a == true, en anders b.
Nee, dan krijg ik een error en hij slaat de gegevens momenteel wel op in de database

Alleen wil ik de gegevens ook op het scherm weergeven.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Oh wacht, het is trouwens val(), en ik ging er vanuit dat je met jQuery werkte.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • thriller
  • Registratie: Augustus 2003
  • Laatst online: 18:36
Even kijken of ik het snap.

transport.responseText behoort toch de parameters van Ajax.Request te bevatten? In mijn geval zou dat zoiets zijn als naam=Test&test=5

of moet ik bij test2.php (de pagina die de gegevens opslaat) iets doen om bepaalde waardes terug te sturen die dan met transport.responseText kunnen worden opgehaald?

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 00:24

MueR

Admin Devschuur® & Discord

is niet lief

Thriller, wil je voortaan wat meer inzet in een topic steken? Nu zie ik alleen een dump van je HTML en JavaScript, zonder verder een feitelijke foutmelding, wat je zelf hebt gedaan om het op te lossen en meer van die dingen die beschreven staan in de Quickstart. Iets willen leren is prima, maar leer ook even debuggen.

Anyone who gets in between me and my morning coffee should be insecure.

Pagina: 1

Dit topic is gesloten.