How to read dynamically generated XML with Javascript and ActiveX XMLHTTP object?

Discussion in 'XML' started by mikeyjudkins@yahoo.com, Feb 9, 2005.

  1. Guest

    Ive been banging my head on the wall for hours with this one, hopefully
    someone will know what Im doing wrong here :\

    The Goal:
    I have an xml file that is generated on the fly via JSP which I want to
    load into a Microsoft.XMLHTTP ActiveX object and manipulate via
    javascript on the client side. Data is retreived from the server at the
    request of the javascript without having to reload the page.

    The Problem:
    For the JSP to dynamically output xml, the file must have the extension
    JSP, which is set to the mime type of dynamo-internal/html on the
    server side (as we are using ATG Dynamo). But the javascript on the
    client side will not retrieve anything unless the file extension is
    ..xml (or the mime type is recognized as text/xml). So the only way I
    can get it to work is to change the extension to .xml, which then of
    course amkes it so that the server will not process any of the JSP
    code.

    Ive tried to override the mime type within the javascript, using the
    setRequestHeader method after opening the file, but no luck. A call to
    alert the value of req.responseXML.xml after the send() turns up empty.
    Ive only gotten it to work if I use a static xml file in palce of the
    jsp. Sample of the javascript code is below:

    if (window.XMLHttpRequest) {
    // branch for native XMLHttpRequest object - THIS WORKS
    req = new XMLHttpRequest();
    req.overrideMimeType("text/xml");
    req.onreadystatechange = processReqChange;
    req.open("GET", "models.jsp?cId=300006&mId=TAC24", true);
    req.send(null);
    } else if (window.ActiveXObject) {
    // branch for IE/Windows ActiveX version - NOT WORKING
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
    req.onreadystatechange = processReqChange;
    req.open("GET", "models.jsp?cId=300006&mId=TAC24", true);
    req.setRequestHeader("Content-Type","text/xml");
    req.send();
    }
    }

    In looking at the following example the Microsoft gives (bottom of
    page):

    http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q290591&ID=KB;EN-US;Q290591

    I just dont see what could be going wrong here.


    I should note that I successfully got the script to work using the
    XMLHttpRequest object and the overrideMimeType() method. This works
    with FireFox adn I think some Mozilla clients, but not with the all
    important IE5, which instead uses the XMLHTTP ActiveX control.

    Thanks for any help,

    Mike
     
    , Feb 9, 2005
    #1
    1. Advertising

  2. Re: How to read dynamically generated XML with Javascript and ActiveXXMLHTTP object?

    //:

    > The Problem:
    > For the JSP to dynamically output xml, the file must have the extension
    > JSP, which is set to the mime type of dynamo-internal/html on the
    > server side (as we are using ATG Dynamo). But the javascript on the
    > client side will not retrieve anything unless the file extension is
    > .xml (or the mime type is recognized as text/xml). So the only way I
    > can get it to work is to change the extension to .xml, which then of
    > course amkes it so that the server will not process any of the JSP
    > code.


    Probably not that XML specific, but you should set the
    'Content-Type' response header in your JSP, always:

    http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro5.html#wp73360

    If you further wish the request URL to end with ".xml", the
    JavaServlet specification describes how conforming containers could
    be configured (web.xml - mappings between request URLs and
    servlets/JSPs). Consult with your Dynamo documentation to see how
    it's done there.

    > Ive tried to override the mime type within the javascript, using the
    > setRequestHeader method after opening the file, but no luck. A call to
    > alert the value of req.responseXML.xml after the send() turns up empty.


    I have no experience with the 'XMLHttpRequest' object but I don't
    think setting a request header could change the response (generated
    by the server) in any way.

    --
    Stanimir
     
    Stanimir Stamenkov, Feb 9, 2005
    #2
    1. Advertising

  3. Guest

    It worked after I changed the response header from within the JSP page.
    Cant beleive I hadnt thought of that earlier!
     
    , Feb 9, 2005
    #3
  4. Diego Berge Guest

    Re: How to read dynamically generated XML with Javascript and ActiveXXMLHTTP object?

    wrote:

    > The Problem:
    > For the JSP to dynamically output xml, the file must have the extension
    > JSP,

    [....]
    > But the javascript on the
    > client side will not retrieve anything unless the file extension is
    > .xml (or the mime type is recognized as text/xml).


    In addition to what's been suggested with regards to your specific
    problem (set Content-Type response header), you may also want to have a
    look at the classic "Cool URLs Don't Change"
    <http://www.w3.org/Provider/Style/URI.html> on why file extensions in
    URLs are a Bad Thing.

    Regards,
    Diego Berge.

    --
    e-mail address invalid, please reply to newsgroups.
     
    Diego Berge, Feb 19, 2005
    #4
  5. masantra Guest

    Wrote:
    > It worked after I changed the response header from within the JSP page.
    > Cant beleive I hadnt thought of that earlier!



    I have the same problem in reading the XML file in IE. I use exactly
    the same code, but doesn't work. WHat you mean you change the response
    header from within the JSP page? (is JSP refer to JavaScript, btw?)

    Thanks,


    --
    masantra
    ------------------------------------------------------------------------
    masantra's Profile: http://www.24help.info/member.php?userid=450
    View this thread: http://www.24help.info/showthread.php?t=347535

    24help.info - IT Newsgroups @ http://www.24help.info
     
    masantra, Sep 26, 2005
    #5
  6. Re: How to read dynamically generated XML with Javascript and ActiveXXMLHTTP object?

    masantra wrote:

    > I have the same problem in reading the XML file in IE. I use exactly
    > the same code, but doesn't work. WHat you mean you change the response
    > header from within the JSP page? (is JSP refer to JavaScript, btw?)


    If you have a server side application (e.g. CGI, ASP, JSP, PHP)
    dynamically generating XML then make sure you set the HTTP response
    header to application/xml or some other XML MIME type so in PHP you would do
    header('Content-Type: application/xml');
    before sending the XML, in ASP
    Response.ContentType = "application/xml"

    --

    Martin Honnen
    http://JavaScript.FAQTs.com/
     
    Martin Honnen, Sep 28, 2005
    #6
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. epigram
    Replies:
    4
    Views:
    944
  2. Replies:
    2
    Views:
    185
  3. Replies:
    0
    Views:
    245
  4. Replies:
    2
    Views:
    102
  5. yawnmoth

    Msxml*.XMLHTTP vs. Microsoft.XMLHTTP

    yawnmoth, Nov 7, 2006, in forum: Javascript
    Replies:
    11
    Views:
    433
    Matt Kruse
    Nov 9, 2006
Loading...

Share This Page