www.webdeveloper.com
Results 1 to 5 of 5

Thread: Cannot get data from REST URL

  1. #1
    Join Date
    Sep 2010
    Posts
    3

    Cannot get data from REST URL

    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:

    http://waterservices.usgs.gov/WOF/In...060&period=P1D

    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:

    301 Moved Permanently
    The full error in Firebug:

    uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://localhost:8080/RiverStatuses/js/index.js :: anonymous :: line 64" data: no]
    So, I'm confused.

    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.

    Thanks for any advice/help!

    Ed

  2. #2
    Join Date
    Sep 2010
    Posts
    3
    Wow, no one?

  3. #3
    Join Date
    Apr 2003
    Location
    Netherlands
    Posts
    21,654
    Try loading to your server first
    Code:
    <?php
    $url="http://waterservices.usgs.gov/WOF/InstantaneousValues?location=06306300&variable=00060&period=P1D";
    $data = file_get_contents($url);
    $file= fopen("myFile.xml", "w");
    fwrite($file, $data);
    fclose($file);
    ?>
    At least 98% of internet users' DNA is identical to that of chimpanzees

  4. #4
    Join Date
    Sep 2010
    Posts
    3
    Thanks for the reply.

    So, I can't do it strictly in Javascript? ..and process the return w/o writing it to a file?

  5. #5
    Join Date
    Apr 2003
    Location
    Netherlands
    Posts
    21,654
    It does appear to be blocked to the open method.
    At least 98% of internet users' DNA is identical to that of chimpanzees

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles