Plus Zeichen in AJAX POST Paramenter Escapen

südpol

Erfahrenes Mitglied
Hi,

nach langem Suchen in meinem PHP-Code musste ich leider feststellen, dass dieser vollständig richtig funktioniert und mein Fehler in eine Javascript Funktion zu suchen ist.

Die Variable OBJ wird in der Funktion durch einen base64 codierten String gefüllt. Dieser enthält in einigen Fällen ein Plus Zeichen. Dieses wird offensichtlich beim erneuten Senden des Wertes durch ein Leerzeichen ersetzt und führt damit beim decodieren der Werte zu Fehlern.

Javascript:
function SaveDraftQuestion(TargetURL, ID)
{
    
    var xmlHttp = getXMLHttp();
  
    var POSTID = "input_"+ID;
    var OBJ=document.getElementById(POSTID).value;
 
  
    xmlHttp.onreadystatechange = function()
    {
        if(xmlHttp.readyState == 4)
        {
            HandleResponse(xmlHttp.responseText, 'statusbox');
            if(xmlHttp.responseText == 'OK') 
            {
                deleteTableLine(ID);
            }
            else 
            {
                ErrorTableLine(ID);
            }
        }
    }
 
    var paramenters="OBJ="+OBJ;
    xmlHttp.open("POST", TargetURL, true);
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.send(paramenters);
    
}

Kann mir jemand sagen wie ich sicherstellen kann, dass mein übergebener Wert auch via Post genau so geliefert wird wie er übergeben wurde? Ich bin leider noch nicht so tief in JS drin um das selbst zu wissen. Sorry. :(

Vielen Dank
 
Hi,

ich habe das Problem über Firebug verfolgt und dabei festgestellt das der Eingabestring noch dem Wert entspricht, den ich auch decodieren kann (habe ich auch über alert geprüft). Erst nach durchlauf der o. g. JS Funktion wird das Plus durch ein Leerzeichen ersetzt. (sieh Anhang).

Gibt es eine Möglichkeit das Plus Zeichen in JS zu Escapen?
 

Anhänge

  • js_plus.png
    js_plus.png
    30,2 KB · Aufrufe: 9
Ist der String in nach der folgenden Anweisung noch in Ordnung?

Code:
var paramenters="OBJ="+OBJ;

Wenn dem so ist, hast du auch schon Maniacs Hinweis im Ursprungs-Thread ausprobiert?
 
Hi,

encodeURIComponent() in Kombination mit dem expliziten setzen von UTF-8 im RequestHeader hat die Lösung gebracht. Damit gehen jetzt auch die Umlaute durch die Leitung.

Danke
 

Neue Beiträge

Zurück