...

View Full Version : compatiblity with IE



robs99
09-05-2008, 11:18 PM
Hey,

i was wondering if anyone can help me out. I have a simple ajax shoutbox which works fine on firefox & chrome, but fails to send or receive data on IE. does anyone have any suggestions?

here's a live example, you'll see it's working fine on FF & internet explorer: http://www.it-leaked.com/ajaxsb.php

here is the code:


1
2 <?php //start the session
3 session_start();
4 ?>
5
6 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
7 <html xmlns="http://www.w3.org/1999/xhtml">
8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 <title>Shoutbox</title>
11 <style type="text/css">
12 body
13 {
14 font-family: Verdana;
15 font-size: 7pt;
16 }
17 .shout
18 {
19 margin: 5px;
20 }
21 #scroll_box
22 {
23 overflow: auto;
24 height: 120px;
25 width: 460px;
26 border: 1px solid #333;
27 margin-top: 3px;
28 }
29 </style>
30 <script type="application/javascript">
31 var xmlHttp;
32
33 function getShouts()
34 {
35 xmlHttp = GetXmlHttpObject();
36 if (xmlHttp == null)
37 {
38 alert("Could not create a XmlHttpObject");
39 return;
40 }
41 //set the get url var
42 var url="shoutbox.php?q=get";
43 xmlHttp.onreadystatechange = stateChanged;
44
45 //open the $_GET['get'] page
46 xmlHttp.open("GET",url,true);
47 xmlHttp.send(null);
48 }
49
50 function insertShout()
51 {
52 xmlHttp2 = GetXmlHttpObject();
53 if (xmlHttp2 == null)
54 {
55 alert("Could not create a XmlHttpObject");
56 return;
57 }
58 if (document.getElementById("shout").value == ""
59 || document.getElementById("shout").value == null)
60 {
61 alert("ERROR: No shout entered.");
62 return;
63 }
64 //set the get url var
65 var shout = document.getElementById("shout").value;
66 var url = "shoutbox.php?q=insert&shout="+shout;
67 xmlHttp2.onreadystatechange = stateChanged;
68
69 //open the $_GET['get'] page
70 xmlHttp2.open("GET",url,true);
71 xmlHttp2.send(null);
72
73 getShouts();
74 document.getElementById("shout").value = "";
75 }
76
77 function stateChanged()
78 {
79 if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
80 {
81 //fill the div scroll box with the formatted shouts or "xmlHttp.responseText"
82 document.getElementById("scroll_box").innerHTML = xmlHttp.responseText;
83 }
84 }
85
86 function GetXmlHttpObject()
87 {
88 var xmlHttp = null;
89 try
90 {
91 //Firefox, Opera 8.0+, Safari
92 xmlHttp = new XMLHttpRequest();
93 }
94 catch (e)
95 {
96 //Internet Explorer
97 try
98 {
99 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
100 }
101 catch (e)
102 {
103 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
104 }
105 }
106 return xmlHttp;
107 }
108
109 //get the shouts for when the box is loaded initially
110 getShouts();
111
112 function runme()
113 {
114 getShouts();
115 setTimeout("runme()",3000);
116 }
117
118 setTimeout("runme()",3000);
119 </script>
120 </head>
121
122 <body>
123
124 125
126 //mysql info
127 $db_host = "REMOVED";
128 $db_name = "REMOVED";
129 $db_username = "REMOVED";
130 $db_password = "REMOVED";
131
132 //connect to the database
133 $conn = mysql_connect($db_host,$db_username,$db_password) or die(mysql_error());
134 mysql_select_db($db_name, $conn) or die(mysql_error());
135
136 //set the timezone for the script
137 putenv("TZ=America/Los_Angeles");
138
139 //number of shouts to display
140 $i = 50;
141
142 //function to query the database for the shouts. only parameter is amount of shouts
143 function get_shouts($i)
144 {
145 //the sql query to pull all the info from table `shoutbox`
146 $sql = mysql_query("SELECT * FROM 2 ORDER BY id DESC LIMIT $i");
147
148 //while there are still rows to assign to the $row var, do it
149 while ($row = mysql_fetch_array($sql))
150 {
151 //set the row vars
152 $user = $row['user'];
153 $shout = $row['shout'];
154 $time = $row['timestamp'];
155
156 //echo the formatted shouts
157 echo "<div class=\"shout\">".$user." [".$time."]<br />".htmlentities($shout)."</div>\n";
158 }
159 }
160
161 //function to insert the shouts
162 function insert_shout($user,$shout,$time)
163 {
164 $shout = mysql_real_escape_string($shout);
165 mysql_query("INSERT INTO 2 (user,shout,timestamp) VALUES ('$user','$shout','$time')");
166 }
167
168 //url system for $_GET querys
169 if ($_GET['q'] == "archive")
170 {
171 //archive page
172 echo "<!--archive-->\n\n";
173 }
174 elseif ($_GET['q'] == "get")
175 {
176 //get query
177 echo "<!--get-->\n\n";
178
179 //get the formatted shouts while var $i is the amount of shouts to display
180 get_shouts($i);
181 }
182 elseif ($_GET['q'] == "insert")
183 {
184 //insert query
185 echo "<!--insert-->\n\n";
186
187 //get the username, shout and set the timestamp and then insert it all into the database
188 insert_shout($_SESSION['user'],$_GET['shout'],date("g:i a"));
189 }
190 else
191 {
192 //default page
193 echo "<!--default-->\n\n";
194
195 if (isset($_SESSION['user']))
196 {
197 echo "Welcome, ".$user = $_SESSION['user'];
198 }
199 else
200 {
201 $_SESSION['user'] = "Guest";
202 echo "Welcome, ".$user = $_SESSION['user'];
203 }
204
205 //echo the form and fill the div scroll box with the formatted shouts
206 echo "<br /><input type=\"text\" size=\"55\" id=\"shout\" />
207 <input type=\"button\" value=\"Submit Query\" onclick=\"insertShout();\" />
208 <div id=\"scroll_box\"></div>";
209 }
210
211 ?>
212
213 </body>
214 </html>

I hope someone can help me :)

thanks in advance

Arty Effem
09-06-2008, 02:19 AM
I would suspect a timing problem related to xmlHttp being re-assigned while in use. You must take steps to ensure that can't happen.
Also xmlHttp2 is being assigned the same onreadystatechange handler as xmlHttp, which only addresses the latter.

oesxyl
09-06-2008, 03:20 AM
check this too: on line 4, you close php tag '?>' but on line 124-125 you don't have any
'<?php'

best regards



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum