I thought this would be easy. The United States Geological Survey (USGS) now has a way of getting stream flow data from a REST URL. There are different parameters that can be passed, based on which river gauge is desired, which parameter (ie: water temp, water level), and how many days requested. Below is one such URL:
If you access this URL directly in a browser, you get XML data. I thought this would be easy to get through some simple Javascript. Here is my code:
Code:
var xmlhttp = null;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
if ( typeof xmlhttp.overrideMimeType != 'undefined') {
xmlhttp.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert('Perhaps your browser does not support xmlhttprequests?');
}
url="http://waterservices.usgs.gov/WOF/InstantaneousValues?location=06306300&variable=00060&period=P1D";
xmlhttp.open('GET', url, false);
xmlhttp.send(null);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
// do something with the results
alert("4 or 200");
} else {
// wait for the call to complete
alert("NOT 4 or 200");
}
};
var myObj = eval ( xmlhttp.responseText );
I'm using Firefox/Firebug. I step through the code and see that I'm getting a "301" error. I never saw this before. I looked it up and find that it is:
I also tried dojox's window.name method. That was an adventure. I did what the example told me to do...assigning the call to "deferred". I did get the return XML, but the only way I could see it was to assign it to a DIV. I found no way to assign it to a variable for later processing.
Bookmarks