javascript richtig einbinden + funktion aufrufen
-
Hi
ich habe in einem response der in base64 codiert ist,
nun möchte ich in einer javascript methode diesen response natürlich decodieren.
dazu gibt es ja diverse fertige funktionen
eine davon hab ich mir runtergeladen und es liegt im selben ordner wie mein py programm
der name ist
encrypt.js
jetzt bind ich dieses js so ein
<script language="JavaScript" src="encrypt.js"></script>
und so möchte ich decodieren
... response = request.responseText alert(response); // hier ist der text noch in base64 response = base64Decode(response); // hier geht nichts mehr, js fehler auf der site :(
Frage: was läuft da schief? ich kann doch schon einfach die funktion so aufrufen oder?
-
Ich kenne die JavaScript-Funktion base64Decode gar nicht - ist das eine selbstgeschriebene Funktion in encrypt.js?
-
ja die hab ich mir runtergeladen
woher weiss ich leider nicht mehr
da gibts aber mehrere quellen, wo man sowas runterladen kann. die encrypt.js bietet nicht nur base64 sondern auch diverse andere an.
oben steht
* @author www.farfarfar.com
aber daher hab ich die nicht.
ich poste die funktion mal
function base64Decode(str)
{
var indexBase64 = new Array(
-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1,
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14,
15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
-1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1,
-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1
);var out = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;// trim invalid characters in the beginning and in the end of the string
str = str.replace(/[a-zA-Z0-9\+\/\=]+|[^a-zA-Z0-9\+\/\=]+$/g,"")
var len = str.length;
do
{
enc1 = indexBase64[str.charCodeAt(i++)];
enc2 = indexBase64[str.charCodeAt(i++)];
enc3 = indexBase64[str.charCodeAt(i++)];
enc4 = indexBase64[str.charCodeAt(i++)];chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;out += String.fromCharCode(chr1);
if (enc3 != -1)
{
out += String.fromCharCode(chr2);
}
if (enc4 != -1)
{
out += String.fromCharCode(chr3);
}
}
while (i < len);if (i != len)
{
return "Possibly invalid Base64 encoded text: " + out;
}return out;
}
-
jetzt hab ich ein anderes probelm
also das mit encrypt geht immer noch nicht, aber jetzt hab ich auf
http://www.faqts.com/knowledge_base/view.phtml/aid/1748
ein neues base64 endeckt und das direkt in das py oben geschrieben
jetzt kann ich die funktion aufrufen aber es decodet teilweise!
warum?
also auf dem server liegt ein py programm welches den text so encodet
blub = base64.encodestring(blub) // wenn ich hier mit python decode'de dann erscheint der text normal wieder return blub // so wird er wieder zurückgesandt
jetzt versuche ich auf dem browser folgendes
var test = decode(request.responseText); alert(test);
er endodet teilweise, hat ncoh komische sonderzeichen drinnen
wie macht ihr das eigentlich? acuh mit base64?