Ajax Example  | Forum Leader | | Join Date: Jul 2006 Location: Oklahoma
Posts: 1,076
# 1
Jun 21 '07
| |
AJAX Basic Example -
<script>
-
//set the variables.
-
function getArticle(id) {
-
var link = "/getNews.asp";
-
xmlhttpPost(link, id);
-
}
-
-
//Make the actual connection.
-
function xmlhttpPost(strURL, id) {
-
var xmlHttpReq = false;
-
var self = this;
-
// Mozilla/Safari
-
if (window.XMLHttpRequest) {
-
self.xmlHttpReq = new XMLHttpRequest();
-
}
-
// IE
-
else if (window.ActiveXObject) {
-
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
-
}
-
self.xmlHttpReq.open('POST', strURL, true);
-
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
-
self.xmlHttpReq.onreadystatechange = function() {
-
if (self.xmlHttpReq.readyState == 4) { //ready state 4 means its complete.
-
updatepage(self.xmlHttpReq.responseText);
-
}
-
}
-
self.xmlHttpReq.send(getquerystring(id));
-
}
-
-
//set the query string to be sent
-
function getquerystring(id) {
-
qstr = 'data=' + escape(id); // NOTE: no '?' before querystring
-
return qstr;
-
}
-
-
//put the data on the page.
-
function updatepage(str) {
-
document.getElementById("data").innerHTML = str;
-
}
-
</script>
-
<select onchange="getArticle(this.value);">
-
<option value="1">Train hits car</option>
-
<option value="2">Airplane Crashes</option>
-
<option value="3">Mental Health</option>
-
</select>
-
<div id="data"></div>
-
Now for the getNews.asp --- not fully functional code but an example -
<%
-
news_id = request("id")
-
strSQL = "select * from news where news_id = " & new_id
-
rs.open strSQL, connection, 1, 1
-
if not rs.eof then
-
response.write rs("story")
-
end if
-
%>
-
| | Newbie | | Join Date: Jun 2007
Posts: 5
# 2
Jun 24 '07
| | | re: Ajax Example
Mind saying what the code dose?
|  | Forum Leader | | Join Date: Jul 2006 Location: Oklahoma
Posts: 1,076
# 3
Jun 25 '07
| | | re: Ajax Example
it does an ajax query.
|  | Site Moderator | | Join Date: Nov 2006 Location: UK
Posts: 14,750
# 4
Jun 25 '07
| | | re: Ajax Example Quote:
Originally Posted by herocks Mind saying what the code dose? It gets the news articles from a database by selecting from a drop down without having to refresh/reload the page.
If you don't know Ajax is, maybe you should check out some tutorials.
| | Newbie | | Join Date: Jun 2007
Posts: 5
# 5
Jun 29 '07
| | | re: Ajax Example
Sorry for my noobness. I looked at some AJAX tutorials and this makes a lot more sense but a few things I still don't get...
|  | Site Moderator | | Join Date: Nov 2006 Location: UK
Posts: 14,750
# 6
Jun 29 '07
| | | re: Ajax Example Quote:
Originally Posted by herocks Sorry for my noobness. I looked at some AJAX tutorials and this makes a lot more sense but a few things I still don't get... Like ?
| | Newbie | | Join Date: Jun 2007
Posts: 5
# 7
Jul 1 '07
| | | re: Ajax Example
Eh, I just needa study the code more...
| | Newbie | | Join Date: Oct 2007 Location: Venezuela
Posts: 5
# 8
Oct 31 '07
| | | re: Ajax Example - ajax=function(strURL,sSend){
-
var xmlHttpReq=false
-
var self=this
-
if (window.XMLHttpRequest)self.xmlHttpReq=new XMLHttpRequest()
-
else if(window.ActiveXObject)self.xmlHttpReq=new ActiveXObject("Microsoft.XMLHTTP")
-
self.xmlHttpReq.open('POST',strURL,false)
-
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
-
self.xmlHttpReq.onreadystatechange=function(){
-
if (self.xmlHttpReq.readyState==4){
-
ajax.resul=self.xmlHttpReq
-
}
-
}
-
self.xmlHttpReq.send(sSend)
-
}
-
Hello i have made a little change on the main function, so you can use it like this: - function getArticle(id){
-
ajax('dataExample.php',id) // php,asp,...
-
alert(ajax.resul.responseText)
-
}
-
Not a big deal but now you can use the data loaded directly with the javascript, and no need to load the data into a div continer, i hope it can be helpfull
Last edited by acoder; Oct 31 '07 at 05:10 PM.
Reason: Added code tags
| | Newbie | | Join Date: Oct 2007 Location: Venezuela
Posts: 5
# 9
Oct 31 '07
| | | re: Ajax Example
Sorry o forgot to tell that i couldn't make it work with Firefox, it works only with ie, if some one find a way.. please :)
|  | Site Moderator | | Join Date: Nov 2006 Location: UK
Posts: 14,750
# 10
Oct 31 '07
| | | re: Ajax Example Quote:
Originally Posted by cheogt Sorry o forgot to tell that i couldn't make it work with Firefox, it works only with ie, if some one find a way.. please :) ajax.resul.responseText is only available after the readyState is 4, so the call must be made within the anonymous function onreadystatechange or a function within that anon. function.
|  | Needs Regular Fix | | Join Date: Mar 2007 Location: US
Posts: 428
# 11
Nov 3 '07
| | | re: Ajax Example
could somebody make a firefox compatable versoin? i officially threw out internet explorer. completely. gone. so sad. more secure. Yay Firefox!!!!!
|  | Forum Leader | | Join Date: Jul 2006 Location: Oklahoma
Posts: 1,076
# 12
Nov 4 '07
| | | re: Ajax Example
i'm pretty sure my example works in firefox.
|  | Moderator | | Join Date: May 2007 Location: Munich, Germany
Posts: 4,247
# 13
Nov 4 '07
| | | re: Ajax Example
ok ... let's fix the adapted code ... and a note: the original posted code in the article worked! ... but in case anybody wanted to use the adaptation we have to fix it the following way (for example):
first we adapt the ajax-function so that we may pass a callback to it, that may work with the request-response the correct way: - var ajax = function(strURL, sSend, cb) {
-
var xmlHttpReq = false;
-
var self = this;
-
-
if (window.XMLHttpRequest) {
-
self.xmlHttpReq = new XMLHttpRequest;
-
} else if (window.ActiveXObject) {
-
try {
-
xmlHttpReq = new ActiveXObject('Msxml2.XMLHTTP');
-
} catch (ex) {
-
try {
-
xmlHttpReq = new ActiveXObject('Microsoft.XMLHTTP');
-
} catch (ex) {
-
}
-
}
-
}
-
-
self.xmlHttpReq.open('POST', strURL, false);
-
self.xmlHttpReq.setRequestHeader('Content-Type',
-
'application/x-www-form-urlencoded');
-
-
self.xmlHttpReq.onreadystatechange = function(cb) {
-
if (self.xmlHttpReq.readyState == 4) {
-
cb(self.xmlHttpReq);
-
}
-
}
-
-
// sSend is the id passed by getArticle later on ...
-
// build a query-string in case you need to use it
-
// i didn't do anything with it here
-
self.xmlHttpReq.send(sSend)
-
}
-
later on the call should look like this: - function getArticle(id) {
-
var cb = function(res) {
-
alert(res.responseText);
-
};
-
-
ajax('dataExample.php', id, cb);
-
}
kind regards
ps: and one more note to posters: please try to write the code in articles-sections a way more readable, use indentations, the var keywords etc. and use the semicolon to end your statements ... please! When adapting code then try not to post 'unready' code except you mark it as to be so.
|  | Site Moderator | | Join Date: Nov 2006 Location: UK
Posts: 14,750
# 14
Nov 5 '07
| | | re: Ajax Example Quote:
Originally Posted by iam_clint i'm pretty sure my example works in firefox. Yes it does, but I think eragon was probably referring to cheogt's adapted code.
|  | Site Moderator | | Join Date: Nov 2006 Location: UK
Posts: 14,750
# 15
Nov 5 '07
| | | re: Ajax Example Quote:
Originally Posted by eragon could somebody make a firefox compatable versoin? i officially threw out internet explorer. completely. gone. so sad. more secure. Yay Firefox!!!!! As pointed out, the original version in the first post does work in Firefox.
Even though you might hate Internet Explorer, it is still the most popular browser. You have no choice, but to support it (unless its a personal application which only you will use or all users will be using Firefox).
To help you, check out A Guide to Coding Cross-Browser Scripts and Browser Bugs, Quirks and Inconsistencies.
|  | Needs Regular Fix | | Join Date: Mar 2007 Location: US
Posts: 428
# 16
Nov 7 '07
| | | re: Ajax Example
forgive me im not at all ajax savvy. i will learn.
|  | Site Moderator | | Join Date: Nov 2006 Location: UK
Posts: 14,750
# 17
Nov 7 '07
| | | re: Ajax Example
This is only an example. Also check out some of the tutorials in this thread.
| | Newbie | | Join Date: Oct 2007 Location: Venezuela
Posts: 5
# 18
Nov 15 '07
| | | re: Ajax Example
Sorry for my first version, wasn't helpfull...
Final version, this one works on linux and windows, IE and FireFox -
ajax = function(strURL, sSend) {
-
var xmlHttpReq=false;
-
-
if (!window.ActiveXObject) ajax.req = new XMLHttpRequest();
-
else ajax.req = new ActiveXObject("Microsoft.XMLHTTP");
-
-
ajax.req.open('POST',strURL,false);
-
ajax.req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
-
-
ajax.req.send(sSend);
-
return ajax.req;
-
}
as simple as this but works, one can request string values like:
file *.php in the server:
.....// SQL results to string ->
.....echo "[['1','a Name','a LastName','an e-mail',["XY1F",234.23,1,56]]]"
file *.html in the local browser:
.....o=ajax('data.php',usr.id)
.....aData=eval(o.responseText)
there you have an array loaded with ajax from a Data Base
The diference is that this way we dont need to use a <div> tag to load the result, in the case of loading a sub-webpage one can use:
.....document.getElementById('anyDiv').innerHTML=o .responseText
but the usr will have to w8 a bit more
Last edited by gits; Nov 15 '07 at 08:27 PM.
Reason: added code tags & make code readable
|  | Moderator | | Join Date: May 2007 Location: Munich, Germany
Posts: 4,247
# 19
Nov 15 '07
| | | re: Ajax Example
the ajax-request is async ... when returning the request object you don't have the response already ... at least not in all cases? ... so this isn't working reliable?
| | Newbie | | Join Date: Oct 2007 Location: Venezuela
Posts: 5
# 20
Aug 24 '09
| | | re: Ajax Example Quote:
Originally Posted by gits the ajax-request is async ... when returning the request object you don't have the response already ... at least not in all cases? ... so this isn't working reliable? The ajax is not always async, you can configure it, the example i gave does it online, no async, so you can load data from a data base and the browser waits(freeze?) until it get the answer.
I check the login in my systems like this, and more, it works good!
try it
|  | Moderator | | Join Date: May 2007 Location: Munich, Germany
Posts: 4,247
# 21
Aug 24 '09
| | | re: Ajax Example
i see, i just overlooked the 3rd parameter in your open-method ... the XMLHttpRequest's open() method could use its 3rd parameter to set the request to sync mode ... then no callback is handled since no notification is sent for the request's readystate ... the browser freezes and waits for the response. so the browser basicly behaves as it does with a traditional page-reload - so it is much preferable to use the request-object async. even though you could use it sync and your example works.
|  | Similar JavaScript / Ajax / DHTML bytes | | | Forums
Visit our community forums for general discussions and latest on Bytes
/bytes/about
We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights.
Get the best answers to your questions from over 229,155 network members.
|