reinix
Goto Top

Sonderzeichen (plus) per URL übergeben

Hallo.

Ich will eine Seite mit einem Parameter aufrufen in dem ein Pluszeichen enthalten ist:
tele.asp?nr=+49
da das so wohl nich ganz hin haut mach ich das so:
tele.asp?nr=%2B49

wenn ich mir diese variable nun anzeigen lasse klappt das auch soweit ganz gut:
dim callnr
callnr=Request.QueryString("nr")  
response.write callnr
gibt aus: +49

nun möchte ich das ganze aber mit einem vbscript weiterverarbeiten:
Sub window_onLoad()
	callnumber=<%=callnr%>
	ThisForm.Number.Value=callnumber 
end sub

In meinem textfeld steht jetzt allerdings nur: 49 ... das plus ist verloren gegangen.
Wie übergebe ich das richtig?

(Bitte kommt mir nicht mit der lösung einfach <%=callnr%> als value für das textfeld anzugeben ... der code hier ist nur vereinfacht ... ich mache noch einiges mehr mit der nummer bevor sie ins textfeld kommt)

vielen dank,
reinix

Content-ID: 72400

Url: https://administrator.de/forum/sonderzeichen-plus-per-url-uebergeben-72400.html

Ausgedruckt am: 22.12.2024 um 12:12 Uhr

bastla
bastla 31.10.2007 um 13:36:20 Uhr
Goto Top
Hallo ReiniX!

Das "+" wird wegen der impliziten Konvertierung in eine Zahl weggelassen, daher müsstest Du es gezielt wieder setzen, etwa
If Left(callnumber, 1) <> "0" Then  
	ThisForm.Number.Value="+" & CStr(callnumber)  
Else
	ThisForm.Number.Value=callnumber
End If
Damit würden alle nicht mit 0 beginnenden Nummern ein vorangestelltes "+" erhalten. Einfacher (und genauer) wäre es, bereits vorweg den richtigen Datentyp ("String") zu verwenden, was allerdings von VBS nicht unterstützt wird - ob dies bereits (im "ASP-Teil") durch ein
dim callnr as string
möglich ist (und von VBS auch noch so übernommen wird), müsstest Du testen.

Grüße
bastla
ReiniX
ReiniX 31.10.2007 um 14:07:56 Uhr
Goto Top
oke danke erstmal.
dim callnr as string
Das im ASP-Teil haut nicht hin. Da spucker er mir als fehler aus: Anweisungsende erwartet

If Left(callnumber, 1) <> "0" Then  
	ThisForm.Number.Value="+" & CStr(callnumber)  
Else
	ThisForm.Number.Value=callnumber
End If

Das ist schon um einiges besser um nicht zu sagen fast perfekt!
Das blöde ist nur: es wird nicht immer ein + übergeben.
(an meine seite werden telefonnummern übergeben. das können telefonnummern ins ausland sein (+43....), telefonnummern mit vorwahl (07123...) oder hausinterne nummern (123) )
wenn ich die seite jetzt mit test.asp?nr=123 aufrufe erhalte ich blöderweise ein +123 anstatt nur 123.

hast du dafür vielleicht auch noch eine lösung parat?

mfg
reinix
bastla
bastla 31.10.2007 um 14:20:58 Uhr
Goto Top
Hallo ReiniX!

Du könntest noch die Länge der Nummer zum Kriterium machen, also etwa ab 7 Zeichen das "+" voranstellen:
If Left(callnumber, 1) <> "0" And Len(callnumber) >= 7 Then  
	ThisForm.Number.Value="+" & CStr(callnumber)  
Else
	ThisForm.Number.Value=callnumber
End If

Grüße
bastla
ReiniX
ReiniX 31.10.2007 um 16:23:08 Uhr
Goto Top
bin mir nicht im klaren darüber wie schön oder unschön ich diese lösung finden soll...
aber grade beim löcher in die luft strarren, habe ich mich gefragt ob ich nicht einfach mal versuchen soll, asp den url-parameter in ein verstecktes textfeld schreiben zu lassen und ihn dann von dort mit vbscript auszulesen.
habs mal getestet und es funktioniert wie ich mir das vorstelle face-smile

dankeschööön trotzdem!