XMLhttp request problem

S

sudhaoncyberworld

Hi all

i am using asp.net v2.0

In one of my page i am calling another page using xml http , this is
working fine but first time only ,

I am sending the request on click of button , when i click the button
second time, it's returning the previous response and it's not even
calling that page again, where could be the problem.

client side (aspx page 1- javascript)

var http=new ActiveXObject("Msxml2.XMLHTTP");
http.open("GET","Gensparql.aspx",false);
http.send();
if(http.readyState == 4)
{
if(http.responseText!=null && http.responseText!='' )
{
//my process
}
}

server side (aspx page 2)

Response.Clear();
Response.ContentType = "text/xml";
Response.Write(retVal);
Response.End();

//second time returning same previous output and not calling the aspx
page 2
Hope u understand my problem,i am in urgent, Thanks in advance
 
K

knocte

(e-mail address removed) escribió:
Hi all

i am using asp.net v2.0

In one of my page i am calling another page using xml http , this is
working fine but first time only ,

I am sending the request on click of button , when i click the button
second time, it's returning the previous response and it's not even
calling that page again, where could be the problem.

client side (aspx page 1- javascript)

var http=new ActiveXObject("Msxml2.XMLHTTP");
http.open("GET","Gensparql.aspx",false);
http.send();
if(http.readyState == 4)
{
if(http.responseText!=null && http.responseText!='' )
{
//my process
}
}

server side (aspx page 2)

Response.Clear();
Response.ContentType = "text/xml";
Response.Write(retVal);
Response.End();

//second time returning same previous output and not calling the aspx
page 2
Hope u understand my problem,i am in urgent, Thanks in advance


Perhaps you must send HTTP headers informing about how cacheable is the
content. You could write it so as to expire immediately. BTW, don't use
only ActiveX, or else other (standards compliant) browsers won't work
with your page.

Andrew [ knocte ]

--
 
J

Jambalaya

Append a random number after the url that's being called. The browser
will not use the cache. Just make sure to use a different random number
for each call.

http.open("GET","Gensparql.aspx?nocache=468732156795431",false);
 
R

Randy Webb

Jambalaya said the following on 10/12/2005 10:25 AM:
Append a random number after the url that's being called.

And what is that for?
The browser will not use the cache.

It will if I tell it to.
Just make sure to use a different random number for each call.

Each call of what?
http.open("GET","Gensparql.aspx?nocache=468732156795431",false);

Oh wait, I see now. If you had bothered to quote what you were replying
to it would be easier to see that your approach has a simple flaw in it.
Instead of just trying to guess at a random number, you append the
current time in milliseconds.

--
Randy
comp.lang.javascript FAQ - http://jibbering.com/faq & newsgroup weekly
Answer:It destroys the order of the conversation
Question: Why?
Answer: Top-Posting.
Question: Whats the most annoying thing on Usenet?
 
J

Jambalaya

Oh wait, I see now. If you had bothered to quote what you were replying
to it would be easier to see that your approach has a simple flaw in it.
Instead of just trying to guess at a random number, you append the
current time in milliseconds.

There was no flaw. Just a different method to accomplish the goal.
 
R

Randy Webb

Jambalaya said the following on 10/13/2005 12:22 AM:
There was no flaw. Just a different method to accomplish the goal.

And what method is that? Since you did not elaborate and your code was
hard-coded and showed no signs of being generated, it indicated that one
should hard-code that random number. That is a flaw in the approach -
not a different method to accomplish the same goal.

--
Randy
comp.lang.javascript FAQ - http://jibbering.com/faq & newsgroup weekly
Answer:It destroys the order of the conversation
Question: Why?
Answer: Top-Posting.
Question: Whats the most annoying thing on Usenet?
 
J

Jambalaya

Oh wait, I see now. If you had bothered to quote what you were replying
And what method is that?

You really do seem smarter than this, Randy. I was showing the end
result of the concatenation so that the original poster would
understand the concept. I wasn't writing the code for him. I assume
since he is using xmlhttp that he has sufficient javascript knowledge
to be able to generate a random number and append it to a string.
Since you did not elaborate and your code was
hard-coded and showed no signs of being generated, it indicated that one
should hard-code that random number.

No, if you will reread my first post, it indicates the opposite. I
quote myself, "Just make sure to use a different random number for each
call."
That is a flaw in the approach -
not a different method to accomplish the same goal.

I guess I'll admit there was a flaw. And that is that I didn't write
all the javascript for the original poster. I guess I'm more of a
teach-a-man-to-fish sort of guy versus a give-a-man-a-fish guy.

J
 
A

Andrew Stephanoff

1.You must generate XML-content on php or ASP and set th header with
following info: "Content-type: application/xml; Cache-control:
no-cache;". If you use "clear" XML, the content will be cached.
2. Code in javascript will be follow:

var http;
if (window.XMLHttpRequest) {
try {http = new XMLHttpRequest();}
catch(e){http = false;}
} else if (window.ActiveXObject("Microsoft.XMLHTTP")) {
try {http = new window.ActiveXObject("Microsoft.XMLHTTP");}
catch(e) {
try {http = new window.ActiveXObject("Msxml2.XMLHTTP");}
catch(e){http = false;}
} else {
http = false;
}
http.open("GET","Gensparql.aspx",true);
http.onreadystatechange = function() {
if (http.readyState == 4)
if (http.status == 200) {
//my process
}
}
http.send(null);
 
R

Randy Webb

Jambalaya said the following on 10/13/2005 4:30 AM:
You really do seem smarter than this, Randy. I was showing the end
result of the concatenation so that the original poster would
understand the concept. I wasn't writing the code for him. I assume
since he is using xmlhttp that he has sufficient javascript knowledge
to be able to generate a random number and append it to a string.

Now it makes sense :)
No, if you will reread my first post, it indicates the opposite. I
quote myself, "Just make sure to use a different random number for each
call."

Fair enough.
I guess I'll admit there was a flaw. And that is that I didn't write
all the javascript for the original poster. I guess I'm more of a
teach-a-man-to-fish sort of guy versus a give-a-man-a-fish guy.

That's probably why I didn't write the script either, huh? <g>
 
R

Richard Cornford

Jambalaya wrote:
No, if you will reread my first post, it indicates the
opposite. I quote myself, "Just make sure to use a
different random number for each call."

It is considerably easier to say "just make sure to use a different
random number for each call" (assuming "call" is acceptable terminology
here (which it probably isn't)) than to actually do it. Remember that
you would have to be keeping track of which random numbers had been
used, even between sessions, as it would not be too good if the browser
decided to deliver content that it had downloaded in a previous session
from its cache in response to a request in a later one.

That is why using the millisecond time in this context has been
proposed, as each time will be unique (at least so long as no two times
are requested within about 60 milliseconds, at most) and it is in the
nature of time that is does not repeat itself. That is; what is wanted
is a unique number rather than a random one, and each item in a sequence
of increasing integer values is unique within that sequnce.
I guess I'll admit there was a flaw.

Yes it is. At lest in part because the proposal that the OP should "make
sure" that no two random numbers be the same is considerably more
troublesome than an available alternative.
And that is that I didn't write
all the javascript for the original poster.
I guess I'm more of a teach-a-man-to-fish sort
of guy versus a give-a-man-a-fish guy.

"Fishing" in an HTTP context would be better mastered with an
understanding of HTTP, and specifically the way in which various HTTP
headers can be configured to discourage client-side caching of various
resources (and possibly the different ways in which POST and GET
requests are handled with regard to caching). With the correct header
configuration it is possible that the URL hack would be unnecessary,
else you would see such "random numbers" on the end of every URL on
every dynamic site.

Richard.
 
J

Jambalaya

Richard Cornford wrote:
It is considerably easier to say "just make sure to use a different
random number for each call" (assuming "call" is acceptable terminology
here (which it probably isn't)) than to actually do it. Remember that
you would have to be keeping track of which random numbers had been
used, even between sessions, as it would not be too good if the browser
decided to deliver content that it had downloaded in a previous session
from its cache in response to a request in a later one.

Agreed. However, the odds that the same random number would be
generated within the lifespan of the cache is sufficiently miniscule to
preclude the need to keep track of the used numbers. (Especially
considering the example I used provided for up to 1 quadrillion
numbers.)
That is why using the millisecond time in this context has been
proposed, as each time will be unique (at least so long as no two times
are requested within about 60 milliseconds, at most) and it is in the
nature of time that is does not repeat itself. That is; what is wanted
is a unique number rather than a random one, and each item in a sequence
of increasing integer values is unique within that sequnce.

It cannot be guaranteed that each time will be unique. JavaScript uses
the system clock. Granted, the odds that a user will change the time
and a second request goes out with the same millisecond timestamp is
very small. Perhaps 1 in a trillion? ;)
Yes it is. At lest in part because the proposal that the OP should "make
sure" that no two random numbers be the same is considerably more
troublesome than an available alternative.

I agree that it would be. But, again, the odds are remote enough to
preclude the need to do so.
"Fishing" in an HTTP context would be better mastered with an
understanding of HTTP, and specifically the way in which various HTTP
headers can be configured to discourage client-side caching of various
resources (and possibly the different ways in which POST and GET
requests are handled with regard to caching). With the correct header
configuration it is possible that the URL hack would be unnecessary,
else you would see such "random numbers" on the end of every URL on
every dynamic site.

We agree again! But as this is a JavaScript Usenet group, the
workaround(hack) suggested involved JavaScript. But just so you know
that I'm not being stubbornly argumentative, I'll agree that the
millisecond method is superior assuming no user clock adjustments. The
random number method would be superior for requests made within 50
milliseconds of each other.

Now that I think about it, both methods should be used simultaneously.
Append the random number after the millisecond timestamp and then you
have a workaround that avoids the simultaneous request problem and the
user clock adjustment problem. Genious!
 
D

Dr John Stockton

JRS: In article <[email protected]>, dated
Thu, 13 Oct 2005 17:57:42, seen in
Richard Cornford said:
That is why using the millisecond time in this context has been
proposed, as each time will be unique (at least so long as no two times
are requested within about 60 milliseconds, at most) and it is in the
nature of time that is does not repeat itself.

For the present purpose, that, if correctly interpreted, will
do.

However, the current time has to be in a form not affected by
Summer Time (a civil hour in Autumn is repeated, in many
places); and, for travellers, by change in location : so UTC
should be used, and +new Date() will give that.

Also, any system in which a drifty clock is corrected by
reference to a time source is liable to have repeated times.

Real Greenwich Mean Time and Real UTC are monotonic, increasing
by close to / exactly one second per second; buy, when it really
matters, one should allow for a computer's estimate of time to
be non-monotonic.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top