JaarMedlem sedan juli 2001434 inlägg Jag försöker skicka en parameter till en funktion, och den parametern innehåller ett + tecken
<a href="javascript: searchTrip('12345+67890')">
Strängen genereras från en JSP sida (mindre viktigt) och för att det inte ska bli ett ' ' så trodde jag var tvungen att översätta det
kör en URLkodare (som tar bort konstinga tecken) .. .tror + blir %2 bl.a.
<a href="javascript: searchTrip('12345%267890')">
Detta är ju bra. Men webläsaren (IE, inte NS) översätter ju %2 när han skickar det till funktionen, så tas det emot som ett plus igen...
function searchTrip(rowid)
{
eval("document.location='nextStep.jsp?searchrow="+rowid+"'");
}
Det betyder att när jag skickar användaren till nextStep.jsp så kommer searchrow=12345 67890, alltså ett mellanrum (+ i URLen blir ju det), och jag kommer få fel.
Om jag gör en IE specifik grej
<td onclick="searchTrip('12345%267890')">tryck här</td>
Så kommer det fungera helt perfekt. Hur rättar jag till denna "bugg" så att länken inte blir med mellanslag?
JojoxxMedlem sedan juni 20004 308 inlägg Du behöver bara escape'a data som skall skickas via url'en (GET), ex;
location.href="nextStep.jsp?searchrow="+escape(rowid);
Om du från JSP-sidan genererar ett "+"-tecken så är det inga problem för JavaScript;
alert("1+2=3");
Kan alltså outputen från jsp-sidan vara, och det kommer att fungera. Det du får tänka på är att ersätta sträng-terminering och ev. radbrytningar;
alert("Mitt namn är Karl \"Kalle\" Karlsson\nMin titel är murare");
JaarMedlem sedan juli 2001434 inlägg Jag tycker inte det verkar fungera...
Här kommer en testkod.
Filen test.asp
<html>
<head>
<title>Testar</title>
<script language="JavaScript">
function test2(text)
{
location.href = 'test.asp?text=' + escape(text);
}
function test(text)
{
counter = "";
for(i=0; i < text.length; i++)
{
if(text.charAt(i) == '+')
{
counter = counter + "%2B";
}
else
counter = counter + text.charAt(i);
}
alert(counter);
location.assign('test.asp?text='+text);
}
</script>
</head>
<body>
<%=request("text")%><br>
<a href="javascript: test2('12345%2B67890')">testar</a>
</body>
</html>
Funktionen test gör det jag vill ska göras (och jag använder den temporärt), men jag vill att det ska skickas som %2B...
Trycker man på länken vill jag alltså att det ska stå test.asp?test=12345%2B67890
Det är det som kommer från JSP scriptet och det är så jag vill skicka det, men IE gör om det så att ett + tecken skickas in...
JojoxxMedlem sedan juni 20004 308 inlägg Vill du att adress-raden skall lyda "test.asp?test=12345%2B67890" skall du inte använda escape. Vill du att svaret från <%=request("text")%> skall lyda "12345%2B67890" skall du använda escape. "%2B" är nämligen "+" när du använder GET, "+" å andra sidan är mellanslag. Logiskt va? :)
JaarMedlem sedan juli 2001434 inlägg Detta har jag förstått (det med plus o mellanslag)
Det jag inte förstår är hur jag får följande kod att skicka iväg användaren till sidan "test.asp?test=12345%2B67890"
Filen test.asp
<%
myValue = "12345%2B67890"
%>
<html>
<head>
<title>Testar</title>
<script language="JavaScript">
function test(text)
{
location.href = 'test.asp?text=' + text;
}
</script>
</head>
<body>
<%=request("text")%><br>
<a href="java script: test('<%=myValue%>')">testar</a>
</body>
</html>
Denna kod för att göra det "övertydligt"...
Jag har ett värde med ett plustecken (+) i variabeln myValue, och jag vill att efter man tryckt på länken, ska hamna på sidan test.asp och variabeln test ska skrivas ut som "12345+67890"
Peter SMedlem sedan dec. 20025 483 inlägg Om jag har förstått dig rätt, skulle du kunna göra så här:
...
location.href = 'test.asp?text=' + text.replace(/[+]/g, "%2B");
...
:)
JaarMedlem sedan juli 2001434 inlägg Jupp, det var en kortare variant av vad jag själv kom fram till (se mitt andra inlägg och funktionen test() )
Det verkar som om detta är det enda sättet att göra det på. Tycker det är konstigt eftersom det inte är några som helst problem i NS 4.x att göra det.
Tack så mycket för den hjälp jag fått..