nimble: Erhalte immer das selbe XML

Hi
Ich schaffe es irgendwie nicht POST Infromationen zu übertragen:

  
 var resObjekt = new ActiveXObject("Microsoft.XMLHTTP");  
  
 this.getXml = function(theOptions)  
 {  
 alert(theOption);  
 resObjekt.open('post', 'request', false);  
 resObjekt.send("options="+theOptions);  
 alert(resObjekt.responseText);  
 return resObjekt.responseXML;  
 }  

Der Server soll jetzt diese option auslesen:

  
String options = request.getParameter("options");  
response.setContentType("text/xml");  
PrintWriter out = response.getWriter();  
out.print(controller.newRequest(options).toString());  
out.close();  
  
------------------  
    public String newRequest(String options)  
    {  
        StringBuffer optionBuffer = new StringBuffer();  
        optionBuffer.append(options);  
        System.out.println(optionBuffer.toString());  
}  

im Logfile kann ich nun sehen, dass die Option immer "" ist...

Das Problem muss an der übermittlung liegen, nur wie sende ich eie POST Parameter richtig?

THX

------------------------------
lieber ein Pinguin der läuft
als ein Fenster das hängt
------------------------------

  1. n'abend,

    Ich schaffe es irgendwie nicht POST Infromationen zu übertragen:

    soweit ich das mit den Servlets bisher verstanden habe, gibts da eine methode doPost() (o.ä.), die aufgerufen wird, wenn ein POST-Request reinkommt. Da du - wie weiter unten - in deinem Log einen Eintrag über den Request bekommen hast, wird der POST-Request wohl durchgegangen sein.

    var resObjekt = new ActiveXObject("Microsoft.XMLHTTP");

    this.getXml = function(theOptions)
    {
    alert(theOption);
    resObjekt.open('post', 'request', false);
    resObjekt.send("options="+theOptions);
    alert(resObjekt.responseText);
    return resObjekt.responseXML;
    }

      
    Einmal steht hier theOption und einmal theOptions - ist das beabsichtigt?  
      
    
    > im Logfile kann ich nun sehen, dass die Option immer "" ist...  
    > Das Problem muss an der übermittlung liegen, nur wie sende ich eie POST Parameter richtig?  
      
    In meinem [remoteCommunicator](http://rodneyrehm.de/tools/remotecommunicator) behandle ich POST-Requests folgendermaßen:  
      
    ~~~javascript
    req.open("POST", url, true);  
    var ctSent = false;  
    for(var i=0; i<requestHeaders.length;i++)  
    {  
      req.setRequestHeader(requestHeaders[i][0], requestHeaders[i][1]);  
      if(requestHeaders[i][0].toLower() == 'content-type')  
        ctSent = true;  
    }  
    if(!ctSent) req.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );  
    req.setRequestHeader( 'Content-length', data.length );  
    req.send(data);
    

    Ich hab da noch eine extra Behandlung für (weitere) requestHeader drin.
    Die kannst du durchaus weglassen. Wichtig sind aber ein gesetzter content-type und content-length.

    weiterhin schönen abend...

    --
    wer braucht schon großbuchstaben?
    sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|
  2. hi,

    Das Problem muss an der übermittlung liegen, nur wie sende ich eie POST Parameter richtig?

    So, wie es ein Browser auch tut - Formulardaten als "application/x-www-form-urlencoded" übermitteln.

    Also zwischen open und send noch die Methode setRequestHeader() des XMLHTTPRequest-Objektes aufrufen, und damit eben diesen Content-Type Header übermitteln.
    Und die zu übermittelnden Daten noch entsprechend kodieren, sofern nicht schon geschehen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }