Reputation: 25583
URL http://localhost/mysite/mypage?param=123
works fine. However, if I want to put some special characters in param
, like ?
, /
, \
, then the URL becomes http://localhost/mysite/mypage?param=a=?&b=/
or http://localhost/mysite/mypage?param=http://www.example.com/page2?a=\&b=...
which won't work. How do I resolve this issue?
Upvotes: 43
Views: 210068
Reputation: 36546
You need to use encode special characters, see this (archive of dead link) page for a reference.
If you're using PHP, there's a function to do this, called urlencode().
Upvotes: 3
Reputation: 5048
In JavaScript you can use the encodeURI()
function.
ASP has the Server.URLEncode()
function.
You can use HttpServerUtility.UrlEncode
in .NET.
Upvotes: 6
Reputation: 6994
I did below, it works fine.
const myQueryParamValue = "You&Me";
const ajaxUrl = "www.example.com/api?searchText="+encodeURIComponent(myQueryParamValue)
Upvotes: 2
Reputation: 4590
You need to encode the query parameters before combining them to form a url. The function needed here is encodeURIComponent.For example,
the url you need to create is:
http://localhost/mysite/mypage?param=a=?&b=/
Now, assuming that ? and / comes as variables, you need to encode them before putting in the url. So lets create your url using this function(I am expecting two query parameters):
var q1 = "a=?"; //came from some input or something
var q2 = "/"; //came from somewhere else
var faultyUrl = "http://localhost/mysite/mypage?param="+ q1 +"&b=" + q2;
// "http://localhost/mysite/mypage?param=a=?&b=/"
var properUrl = "http://localhost/mysite/mypage?param="+ encodeURIComponent(q1) +"&b=" + encodeURIComponent(q2);
//"http://localhost/mysite/mypage?param=a%3D%3F&b=%2F"
This function is in basic JS and supported in all the browsers.
Upvotes: 19
Reputation: 3376
Easy way to pass QueryString value with special character using javascript:
var newURL=encodeURIComponent(uri);
window.location="/abc/abc?q="+newURL;
Upvotes: 8
Reputation: 935
You need to substitute the characters with URL entities. Some information here.
Upvotes: 0
Reputation: 939
You have to encode special characters in URLs. See: http://www.w3schools.com/tags/ref_urlencode.asp
Upvotes: 36