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

skicka text som GET-variable

Rekommendera Poster

jan-erik

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]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Anjuna Moon

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)

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
jan-erik

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 ?.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Anjuna Moon
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]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
jan-erik

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

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
jan-erik

jag provade detta:

var txt1 = text.replace(/?/g, "*qm");

 

men då dog scriptet!

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Anjuna Moon
escape() bryr sig inte alls om frågetecken.

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

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
jan-erik

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?

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
johanafm

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.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...