tonen van foutcodes via Javascript en php
Ik ben bezig met een heel simpel chat systeem voor mijn website.
Maar ik loop tegen het volgende aan.
Als ik de write.php rechstreeks aanroep dan kan ik wel iets schrijven naar de database.
Maar als ik dat doe via chat.php dan niet.
Ik krijg daarbij ook geen foutmelding te zien.
Hoe kan ik ervoor zorgen dat ik toch een melding zie.
Hieronder de codes die ik ervoor gebruik.
chat.php
Code (php)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
if($_SESSION['login'] == FALSE)
{
echo "niet ingelogd";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
#chatbox {
background-color:#0F0;
margin-left:10px;
width:530px;
height:500px;
}
#gesprek {
background-color:#F00;
margin-left:10px;
width:530px;
height:auto;
}
</style>
<script type="text/javascript">
var xmlHttp
function write1()
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}
var bericht = document.writeform.bericht.value;
var url="write.php?b="+bericht;
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function stateChanged()
{
if (xmlHttp.readyState==4)
{
document.getElementById("verstuurd").innerHTML="Verstuurd!";
document.writeform.bericht.value="";
//chat();
}
}
function entsub(event)
{
var Key = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if(Key == 13)
write1();
else
return true;
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
</script>
</head>
<div id="chatbox"></div>
<div id="gesprek">
<form id="writeform" name="writeform">
naam:<?php echo $_SESSION['gebruikersnaam']; ?><br />
Bericht:<br/>
<textarea rows="4" cols="70" id="bericht" onkeypress="return entsub(event)" /></textarea><br />
<input name="verstuur" type="button" id="verstuur" value="Verstuur" onclick="write1()" />
<span id="verstuurd"></span>
</form>
</div>
<body>
</body>
</html>
if($_SESSION['login'] == FALSE)
{
echo "niet ingelogd";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
#chatbox {
background-color:#0F0;
margin-left:10px;
width:530px;
height:500px;
}
#gesprek {
background-color:#F00;
margin-left:10px;
width:530px;
height:auto;
}
</style>
<script type="text/javascript">
var xmlHttp
function write1()
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}
var bericht = document.writeform.bericht.value;
var url="write.php?b="+bericht;
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function stateChanged()
{
if (xmlHttp.readyState==4)
{
document.getElementById("verstuurd").innerHTML="Verstuurd!";
document.writeform.bericht.value="";
//chat();
}
}
function entsub(event)
{
var Key = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if(Key == 13)
write1();
else
return true;
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
</script>
</head>
<div id="chatbox"></div>
<div id="gesprek">
<form id="writeform" name="writeform">
naam:<?php echo $_SESSION['gebruikersnaam']; ?><br />
Bericht:<br/>
<textarea rows="4" cols="70" id="bericht" onkeypress="return entsub(event)" /></textarea><br />
<input name="verstuur" type="button" id="verstuur" value="Verstuur" onclick="write1()" />
<span id="verstuurd"></span>
</form>
</div>
<body>
</body>
</html>
Hier de write.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
session_start();
include("../includes/config.php");
if($_GET['b'])
{
//Gegevens in de database invoeren
$sql_b = "INSERT INTO chatten (login,bericht,tijd)
VALUES
(
'".$mysqli->real_escape_string($_SESSION['gebruikersnaam'])."',
'".$mysqli->real_escape_string($_GET['b'])."',
NOW())";
if(!$res_b = $mysqli->query($sql_b))
{
//Als fout is gevonden weg schrijven in logs.//
echo $mysqli->error;
}
}
?>
session_start();
include("../includes/config.php");
if($_GET['b'])
{
//Gegevens in de database invoeren
$sql_b = "INSERT INTO chatten (login,bericht,tijd)
VALUES
(
'".$mysqli->real_escape_string($_SESSION['gebruikersnaam'])."',
'".$mysqli->real_escape_string($_GET['b'])."',
NOW())";
if(!$res_b = $mysqli->query($sql_b))
{
//Als fout is gevonden weg schrijven in logs.//
echo $mysqli->error;
}
}
?>
Met vriendelijke groet,
Thomas de Vries.
Gewijzigd op 24/01/2012 12:29:32 door Thomas de vries
Je maakt met Ajax connectie met
"write.php?b="+bericht
Daar staat niets van nick.
Je zou kunnen die if($_GET['nick']) weglaten. Accolades ook meenemen, uiteraard.
Verder: indien dit werkt, kan je nog een paar dingen optimaliseren. Je kan dit beter met POST doen dan met GET; je moet nog wat beter controleren ...
Maar first things first
Gewijzigd op 24/01/2012 12:32:57 door Kris Peeters
Is ook aangepast.
Gewijzigd op 24/01/2012 12:29:58 door thomas de vries
Jij zet een hoop HTML tussen </head> en <body> ... Daar mag niets tussen staan.
Nu, wat de fout betreft ...
Ajax is javascript. Het kan javascript niets schelen welke taal op de server wordt gebruikt. Php, asp, ... maakt javascript allemaal niets uit.
Het contact dat je hebt, is het volgende:
- javascript stuurt een verzoek naar de server, via een url (en eventueel POST en COOKIES)
- De server stuurt data terug. Die data kan HTML zijn (bv. je haalt met Ajax een stuk HTLM op en steekt het in een div); of ruwe data (XML of JSON); of simpelweg een stukje tekst.
Jij moet dus op twee dingen letten:
- zijn er Ajax problemen (connectie met de server)?
- zijn er problemen op php-vlak?
Wat je kan doen in debug-mode (zolang je test en het zootje niet online vrijgeeft):
write.php kan een bericht terugsturen naar javascript; jij kunt in dit bericht ook errors terug geven
concreet, het volgende:
* Zie dat je in je gewone pagina het volgende hebt (maakt niet uit waar, ergens in de <body>):
en dan het volgende:
Code (php)
1
2
3
4
2
3
4
if (xmlHttp.readyState==4)
{
document.getElementById("debug").innerHTML= xmlHttp.responseText;
... // en dan dus de rest van je afhandeling.
{
document.getElementById("debug").innerHTML= xmlHttp.responseText;
... // en dan dus de rest van je afhandeling.
Op die manier krijg je de eventuele error, die php heeft geproduceerd, in een div staan.
Zeg eens wat er gebeurt.
Gewijzigd op 24/01/2012 17:52:01 door Kris Peeters