Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Having trouble using XMLHttpRequest to refresh data



This is a caching bug that I ran into as well. If the URL is the same every time then you get the undefined error. I "fixed" the problem by adding ?ts_cache=<currenttime> to the URL to make it different and the problem went away.

Hope that helps.

--Thaddeus O. Cooper
(email@hidden)

On May 21, 2005, at 8:45 AM, Blake Patterson wrote:

I have two chunks of HTML on my widget that I want to refresh with a timer, pulled from remote .js files that just do document.writes of HTML.  Poor man's RSS sort of - but my needs go beyond RSS so that's not an option for me.

Anyway, I wrote this demo that basically works:

http://www.blakespot.com/xml.html

I am trying to do the same thing in my widget, but it never works.  Let me explain.

In my loaded() function, called as onLoad in my BODY tag, I do this:

<x-tad-bigger>loadXMLDoc(</x-tad-bigger><x-tad-bigger>http://www.blakespot.com/doc1.html'</x-tad-bigger><x-tad-bigger>);</x-tad-bigger>

<x-tad-bigger>And that function I have defined as:</x-tad-bigger>

<x-tad-bigger>function</x-tad-bigger><x-tad-bigger> loadXMLDoc(url) </x-tad-bigger>
<x-tad-bigger>{</x-tad-bigger>
<x-tad-bigger>    </x-tad-bigger><x-tad-bigger>if</x-tad-bigger><x-tad-bigger> (window.XMLHttpRequest) {       </x-tad-bigger>
<x-tad-bigger>        req = </x-tad-bigger><x-tad-bigger>new</x-tad-bigger><x-tad-bigger> XMLHttpRequest();</x-tad-bigger>
<x-tad-bigger>        req.onreadystatechange = processReqChange();</x-tad-bigger>
<x-tad-bigger>        req.open(</x-tad-bigger><x-tad-bigger>"GET"</x-tad-bigger><x-tad-bigger>, url, </x-tad-bigger><x-tad-bigger>true</x-tad-bigger><x-tad-bigger>);</x-tad-bigger>
<x-tad-bigger>        req.send(</x-tad-bigger><x-tad-bigger>null</x-tad-bigger><x-tad-bigger>);</x-tad-bigger>
<x-tad-bigger>    } </x-tad-bigger>
<x-tad-bigger>}</x-tad-bigger>

<x-tad-bigger>...and this function calls:</x-tad-bigger>

<x-tad-bigger>function</x-tad-bigger><x-tad-bigger> processReqChange() </x-tad-bigger>
<x-tad-bigger>{</x-tad-bigger>
<x-tad-bigger>    </x-tad-bigger><x-tad-bigger>// only if req shows "loaded"</x-tad-bigger>
<x-tad-bigger>    </x-tad-bigger><x-tad-bigger>if</x-tad-bigger><x-tad-bigger> (req.readyState == </x-tad-bigger><x-tad-bigger>4</x-tad-bigger><x-tad-bigger>) {</x-tad-bigger>
<x-tad-bigger>        </x-tad-bigger><x-tad-bigger>// only if "OK"</x-tad-bigger>
<x-tad-bigger>        </x-tad-bigger><x-tad-bigger>if</x-tad-bigger><x-tad-bigger> (req.status == </x-tad-bigger><x-tad-bigger>200</x-tad-bigger><x-tad-bigger>) {</x-tad-bigger>
<x-tad-bigger>                    document.getElementById(</x-tad-bigger><x-tad-bigger>'news'</x-tad-bigger><x-tad-bigger>).innerHTML = </x-tad-bigger><x-tad-bigger>"yo"</x-tad-bigger><x-tad-bigger>;</x-tad-bigger>
<x-tad-bigger>        } </x-tad-bigger><x-tad-bigger>else</x-tad-bigger><x-tad-bigger> {</x-tad-bigger>
<x-tad-bigger>            document.getElementById(</x-tad-bigger><x-tad-bigger>'news'</x-tad-bigger><x-tad-bigger>).innerHTML = </x-tad-bigger><x-tad-bigger>"There was a problem retrieving the XML data:\n"</x-tad-bigger><x-tad-bigger> + req.statusText;</x-tad-bigger>
<x-tad-bigger>        }</x-tad-bigger>
<x-tad-bigger>    }</x-tad-bigger>
<x-tad-bigger>}</x-tad-bigger>

<x-tad-bigger>And this is the block of code I am trying to replace (the element id = news)</x-tad-bigger>

<x-tad-bigger>    </x-tad-bigger><x-tad-bigger><span class="newsText"></x-tad-bigger>
<x-tad-bigger>        </x-tad-bigger><x-tad-bigger><br></x-tad-bigger>
<x-tad-bigger>        </x-tad-bigger><x-tad-bigger><div id="news"></x-tad-bigger><x-tad-bigger>start</x-tad-bigger><x-tad-bigger></div></x-tad-bigger>
<x-tad-bigger>    </x-tad-bigger><x-tad-bigger></span></x-tad-bigger>


<x-tad-bigger>...the problem is, req.readyState is always 0.  The state indicates UNDEFINED.  I do have:</x-tad-bigger>

<x-tad-bigger>    </x-tad-bigger><x-tad-bigger></key></x-tad-bigger>
<x-tad-bigger>    </x-tad-bigger><x-tad-bigger><true/></x-tad-bigger>

<x-tad-bigger>In my plist.  What could be the issue?  I can hit the net fine from this machine.  I have been stumped for days here.  Any ideas?  The issue is not really whether it's updating the 'news' element id because, as I said, when I output req.readyState in the top of processReqChange, it's always 0...</x-tad-bigger>

<x-tad-bigger>req is defined as a global var at the start of the .js file for my widget.</x-tad-bigger>

<x-tad-bigger>Thanks for any help!</x-tad-bigger>




<x-tad-bigger>bp</x-tad-bigger>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Dashboard-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/dashboard-dev/email@hidden

This email sent to email@hidden
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Dashboard-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/dashboard-dev/email@hidden

This email sent to email@hidden

References: 
 >Having trouble using XMLHttpRequest to refresh data (From: Blake Patterson <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.