I managed to get this function in a ajax script working for all browsers except IE!

function ShowPrevSlides(selcat,selpic,catno) {
	objXmlHttp.open("GET",url1 + "?id=" + selcat);
	objXmlHttp.selcat = selcat;
	objXmlHttp.selpic = selpic;
	objXmlHttp.catnr = catno;

The problem is that I need those variables to be send in this response function, n.l. PrevSlide():

function PrevMenuResponse() {
	if (objXmlHttp.readyState == 4) {
		if (objXmlHttp.status == 200) {
	} else {return}

It might be I'm using a bug in my advantage but it realy works on FF (mac and windows) and Safari (mac) but it wont work in IE 6 or IE 7

Is there any other way to do this?

Thanks in advance

9 Years
Discussion Span
Last Post by tackenco

Not knowing exactly what your other functions do, you could try sending the values along as parameters to the callback function.

Something like:

var ajaxObj;
function AjaxFunction(par1, par2) {
  callback = function(){ AjaxCallback(par1, par2); };
  ajaxObj = GetXmlHttpObject(callback);
  ajaxObj.open("GET", "http://example.com");

function AjaxCallback(par1, par2) {
  if(ajaxObj.readyState == 4) {
    doStuff(par1, par2);

Hi Atli,

First, thanks for your reply.
I've tried to do something like you mentioned but i only gert errors in my script.
I must do something wrong or it doesn't work.

I will explain a littlebit more.
With the script I make an AJAX request for getting some picture of some category out of an array. After 3 secs it automaticly does it again for the next picture out of the array.

So in my callback function the img tag gets a new url for the picture after readystate 4 and after that it needs to calculate the next picture out of the array. For this my script needs to know what id, category, and so on we are, so I need to pass those vars with it.

In this line


I can not give those parameters.
I liked your way and it looks like it should work but I cant get it working.

Maybe I'm almost there
Thanks, Niels


I did a little test myself, maybe it can help you.

It simply sent a request to a PHP script to update a couple of numbers, which I then displayed and updated ever 1 second.

This is the HTML

	<script type="text/javascript" src="script.js"></script>
<body onload="javascript: SendRequest(0, 1);">
	<div id="Output">Loading...</div>

And the "script.js" file

var ajaxObj;

/** Create a new XmlHttpRequest **/
function GetXmlHttpObject(pCallback) {
	request = null;
	if(window.XMLHttpRequest) { // Standard method
		request = new XMLHttpRequest();
	else { // IE crap
		try {
			request=new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				request=new ActiveXObject("Microsoft.XMLHTTP");
			catch(e) {
				return false;
	request.onreadystatechange = pCallback;
	return request;

/** Send the request **/
function SendRequest(par1, par2) {
	callback = function(){ AjaxCallback(par1, par2); };
	ajaxObj = GetXmlHttpObject(callback);
	ajaxObj.open("GET", "getIndex.php?first="+ par1 +"&second="+ par2);

/** Request callback **/
function AjaxCallback(par1, par2) {
	if(ajaxObj.readyState == 4) {

/** Parse the input data and start again **/
function UseData(pInput) {
	pieces = pInput.split(":");
	first = parseInt(pieces[0]);
	second = parseInt(pieces[1]);

	document.getElementById('Output').innerHTML = "First: "+ first +" - Second: "+ second;

	timeout = function(){ SendRequest(first, second); };
	setTimeout(timeout, 1000);

And the PHP:

	($first = @$_GET['first']) or $first = 0;
	($second = @$_GET['second']) or $second = 0;
	$first++; $second++;
	echo "$first:$second";

Worked perfectly in all browsers I tested in (including IE7).


Hi Atli,

Thank you so much,

Ive been folowing your advice and tried again.
I mannaged to get it working!

I did not check on windows IE since im not in the office but I'm hopefull that it works now with you method!

I had this problem before and now I know how to solve it next time


ps the result of my work http://www.tackenco.nl/?id=177

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.