Just nu i M3-nätverket
Gå till innehåll

skicka text som GET-variable


jan-erik

Rekommendera Poster

Jag använder mig av Ajax/Prototype för att skicka över GET-variabler till ett php-script som ska arbeta med dessa variabler.

En av dessa variabler är text, och det visar sig att om denna text innehåller frågetecken (?) så uppfattas texten efter frågetecknet som ett variablevärde, och texten före som ett variable-namn.

"alerten" visar att anropet av funktionen funkar som den ska.

 

function utvrdup(utvrdnr,huid,huna,forf,text)
{
alert(utvrdnr+huid+huna+forf+text);	
var mydiv='txtHint'; 
var url='updmsql.php'+'?rand='+new Date().getTime();

var pars = 
'utvrdnr='+utvrdnr  + 
'&huid='+huid+ 
'&huna='+huna+ 
'&forf='+forf+ 
'&text1='+text;
new Ajax.Updater(mydiv,url,{method: 'get',parameters: pars
}); 	
}

Ska man skicka texten på nåt annat sätt, eller finns det nåt smart sätt att komma runt?

 

[inlägget ändrat 2008-10-07 12:21:16 av jan-erik]

[inlägget ändrat 2008-10-07 12:22:16 av jan-erik]

 

Tråden flyttad från Webblayout & -design av moderator

 

[inlägget ändrat 2008-10-07 14:39:02 av Cluster]

Länk till kommentar
Dela på andra webbplatser

Använd javascript-funktionen escape(dinData) för att koda om specialtecken till hexkoder för att undvika detta problem. På PHP-sidan måste du sedan konvertera tillbaka strängen med funktionen urldecode(dinData)

 

Länk till kommentar
Dela på andra webbplatser

jag provade, men det gjorde ingen skillnad. Och, frågetecken är väl inte ett specialtecken? Jag har fått för mig att det som spökar är att man anger en GET-variable med ?.

 

Länk till kommentar
Dela på andra webbplatser

Och, frågetecken är väl inte ett specialtecken?

Jo, i en URL är det verkligen ett specialtecken. Frågan är varför det inte fungerade. Hur ser den förändrade koden ut?

EDIT: Jag måste gardera mig mot att jag inte känner till vad just detta bibliotek gör med parametrarna innan ivägskick.

[inlägget ändrat 2008-10-07 13:17:03 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

escape() bryr sig inte alls om frågetecken.

Jodå, det gör det visst. escape("?") ger hexsträngen %3F.

 

 

Länk till kommentar
Dela på andra webbplatser

Javiss.Anjuna, du hade rätt som vanligt. Nu har jag löst problemet med specialtecken, men nu dyker jag på att en URL tydligen bara får ha en bgränsad längd. Då funkar det dåligt att skicka med en längre text som en paramer.

Är det så, och i så fall hur lång får en URL vara, och hur kommer man enklast runt det?

 

Länk till kommentar
Dela på andra webbplatser

  • 1 month later...

Från http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2

The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET-based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section 10.4.15).

 

Note: Servers ought to be cautious about depending on URI lengths

above 255 bytes, because some older client or proxy

implementations might not properly support these lengths.

 

Använd post method istället.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...