Question

How do you have multiple ajax requests on the same page using ASP?

Asked by: djpazza

I'm making a page to query other website and return a result.

Like this website does
http://tools.web-max.ca

I know how to do this for one website using MSXML2.ServerXMLHTTP.

The remote page would just display "success" or "fail"

So one the main page e.g

Name             status
website 1      success
website2       fail

The code I'm using at the moment can only handle one request at a time, how do I get more to display?

<script>
var xmlHttp
 
function vremote(str)
{ 
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  } 
  document.getElementById('loading').style.visibility='visible';
var url="test.asp";
var testurl = document.getElementById('testurl').value;
url=url+"?testurl="+testurl;
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function stateChanged() 
{ 
if (xmlHttp.readyState==4)
{ 
document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
document.getElementById('loading').style.visibility='hidden';
}
}
 
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>
                                  
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:

Select allOpen in new window

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-05-18 at 05:24:41ID24417232
Tags

ajax

,

asp

Topics

Asynchronous Javascript and XML (AJAX)

,

Active Server Pages (ASP)

Participating Experts
2
Points
500
Comments
14

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. AJAXED ASP
    http://www.webdevbros.net/ajaxed/ I need help from someone who realy understands how the ajaxed work http://www.webdevbros.net/2007/07/02/ajaxed-calling-server-side-vbscript-procedures-from-client-side-equivalent-to-php-xajax/ http://www.webdevbros.net/2007/07/02/ajaxed-call...
  2. jquery - ajax query on client piles up if server times out for…
    I have made a jquery ajax request which auto refreshes a div with the latest results every 10 seconds. Problem is if the server does not respond for a while, it continues to make the next request and so forth. This begins to pile up so when the server does start responding, ...
  3. AJAX submit
    at the moment im using AJAX tabs , but im using classic nonAJAX form actions. i have been told that for my script to work properly so that forms an be processed under each tab that i need to have it completely AJAX. so how can i chnage the code below so that it carries out...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: kevp75Posted on 2009-05-19 at 05:13:47ID: 24420985

pass the div ID to the function as well...  and then have multiple divs on your page:

<script>
var xmlHttp
 
function vremote(str, divToHold)
{ 
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  } 
  document.getElementById('loading').style.visibility='visible';
//var url="test.asp";
//var testurl = document.getElementById('testurl').value;
//url=url+"?testurl="+testurl;
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",str,true);
xmlHttp.send(null);
}
function stateChanged() 
{ 
if (xmlHttp.readyState==4)
{ 
document.getElementById(divToHold).innerHTML=xmlHttp.responseText;
document.getElementById('loading').style.visibility='hidden';
}
}
 
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>
 
 
Assuming str is supposed to be the URL:
 
<div id="div1" onclick="vremote('http://www.google.com', this.id);">Click to load Google</div>
<div id="div1" onclick="vremote('http://www.yahoo.com', this.id);">Click to load Yahoo</div>

                                              
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:

Select allOpen in new window

 

by: kevp75Posted on 2009-05-19 at 05:14:27ID: 24420993

sorry...change this:
<div id="div1" onclick="vremote('http://www.google.com', this.id);">Click to load Google</div>
<div id="div1" onclick="vremote('http://www.yahoo.com', this.id);">Click to load Yahoo</div>

to:
<div id="div1" onclick="vremote('http://www.google.com', this.id);">Click to load Google</div>
<div id="div2" onclick="vremote('http://www.yahoo.com', this.id);">Click to load Yahoo</div>

 

by: djpazzaPosted on 2009-05-19 at 06:03:11ID: 24421436

thanks kevp75 just tried the script and its not working, I have tried something this before but I'm guessing you can not pass the divToHold to the next function?

 

by: kevp75Posted on 2009-05-19 at 06:17:01ID: 24421595

What next function?   gimme a few, I'll get a test page up for ya, and some new code

 

by: kevp75Posted on 2009-05-19 at 06:24:32ID: 24421676

Please see the code below:
test page: http://www.zipcm.com/temp.asp

please note: you may not be able to pull this from another domain, as you would not have proper access in order to do it.

/temp.asp
<script type="text/javascript">
//Get Contents of another page, and display them inside an element
strTargetDiv = '';
function loadurl(dest, str1) {
     strTargetDiv = str1;
     try {
     xmlhttp = window.XMLHttpRequest?new XMLHttpRequest():
     new ActiveXObject("Microsoft.XMLHTTP");
     }
     catch (e) { /* do nothing */ }
	 if (dest.indexOf("?")>0){
	     dest = dest + "&sid="+Math.random()
	 } else {
	     dest = dest + "?sid="+Math.random()
	 }
     xmlhttp.onreadystatechange = triggered;
     xmlhttp.open("GET", dest);
     xmlhttp.send(null);     
}
function triggered() {
     if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
		var txt = xmlhttp.responseText;
		var txtNod = document.createTextNode(txt);
		document.getElementById(strTargetDiv).style.display = '';
		document.getElementById(strTargetDiv).innerHTML = txt;
     }
}
</script>
<div id="div1" onclick="loadurl('/temp2.asp', this.id);" style="cursor:pointer;">Click to load time in this div from /temp2.asp</div>
<div id="div2" onclick="loadurl('/temp2.asp', this.id);" style="cursor:pointer;">Click to load time in this div from /temp2.asp</div>
 
 
/temp2.asp:
<%
Response.Write(Now())
%>

                                              
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:

Select allOpen in new window

 

by: kevp75Posted on 2009-10-01 at 08:13:39ID: 25469592

I would like to know what the questioner came up with for "I have made a solution to my question"

24421676 is a valid and working answer

 

by: djpazzaPosted on 2009-10-02 at 04:49:14ID: 25476958

Thanks for you code kevp75, did try it but as you indicated I could not get it to work getting information from other domains, which is one of the requires in my question.

 

by: kevp75Posted on 2009-10-02 at 06:25:06ID: 25477602

Well...  if you have control over the other domain(s), you can pass credentials through this effectively logging in and getting access to do what you need.

Although, in your question you do not mention the need to retrieve information from either, just a pass or fail.

Using the code I posted (with a little modification) will do that for you.  All that needs to be done is an else statement in the triggered triggered function to return a false value will do that.

I'll get another test page up and code for this.  (your question...)

 

by: kevp75Posted on 2009-10-02 at 06:46:16ID: 25477796

test page:

http://development.zipcm.com/testing.asp

code:

/testing.asp:
 
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!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>
<script type="text/javascript">
//Get Contents of another page, and display them inside an element
strTargetDiv = '';
function loadurl(dest, str1) {
     strTargetDiv = str1;
     try {
     xmlhttp = window.XMLHttpRequest?new XMLHttpRequest():
     new ActiveXObject("Microsoft.XMLHTTP");
     }
     catch (e) { /* do nothing */ }
         if (dest.indexOf("?")>0){
             dest = dest + "&sid="+Math.random()
         } else {
             dest = dest + "?sid="+Math.random()
         }
     xmlhttp.onreadystatechange = triggered;
	 try{
	     xmlhttp.open("GET", dest);
    	 xmlhttp.send(null);     
		 }catch(err){
		 	document.getElementById(strTargetDiv).innerHTML = 'Fail';
		 }
}
function triggered() {
     if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
                var txt = xmlhttp.responseText;
                var txtNod = document.createTextNode(txt);
                document.getElementById(strTargetDiv).style.display = '';
                document.getElementById(strTargetDiv).innerHTML = 'Success';
     }else{
	 	document.getElementById(strTargetDiv).innerHTML = 'Fail';
	 }
}
</script>
</head>
 
<body>
<div id="div1" onclick="loadurl('/testing2.asp', this.id);" style="cursor:pointer;">Click to load time in this div from /testing2.asp</div>
<div id="div2" onclick="loadurl('http://www.yahoo.com', this.id);" style="cursor:pointer;">Click to load yahoo.com in this div</div>
 
</body>
</html>
 
/testing2.asp
<%
Response.Write(Now())
%>

                                              
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:

Select allOpen in new window

 

by: djpazzaPosted on 2009-10-05 at 14:02:43ID: 25499724

Thanks for the updated code however it's still not quite what i'm after. When I said the remote page would display success or fail this would be what text is on the remote page.  The idea is to create a webpage that tells me if a client backup has run or not which would be remotely hosted on a clients server.  Then from a webpage in my office I can setup and query lots of clients backups in one screen.  The example url I provided has been changed now but what it did on load is go away and then change the icon against a name too a tick or cross which is basically what im after depending on the remote text.

I have tried the above method but can not get it to pull information from an external domain.

 

by: kevp75Posted on 2009-10-05 at 14:53:52ID: 25500184

>>
I have tried the above method but can not get it to pull information from an external domain.<<

as has already been stated, this cannot be done across multiple domains unless you are authenticated.  I suggest you do a search on "Cross Site Scripting" to see why it is not allowed.

The code I posted does what you asked it do to...  pass back a Success or Fail...

 

by: b0lsc0ttPosted on 2009-10-08 at 21:13:43ID: 25532257

If you need to check a site on a different domain then you need to look at server script as the way to get it.  In other words you would use a page on your server to get the response from the remote site.  Then you could still use AJAX to dynamically fill the page but the URL would be a page on your server.  The same server as the page with the AJAX script.  Kevp75 is right that you can't access other domains, etc with AJAX.  He gave you the term for it and it would pertain to a different protocol as well.  It is browser security to protect the user but can be done by server script.

If your server language is ASP then it doesn't have a great tool to use for this but the Server version of the MS XMLHTTP object or third party programs like ASPTear or ASPHTTP.

Let us know how this helps or if you have a question.

bol

 

by: djpazzaPosted on 2009-10-09 at 01:23:52ID: 31639150

I have written my own asp solution based on kevp75's comment about passing the id to a function.  Using MSXML2.ServerXMLHTTP I have written a vb script function that does the same job.  Apologies for the confusion as I should have posted the MSXML2.ServerXMLHTTP code instead of the xmlHttp=GetXmlHttpObject code.  Getting information from a remote website was a core part of the question. Thanks for your help with this query.

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...