次のURLは正常に機能します。
ただし、「?」、「/」、「\」などの特殊な文字を「param」に入れたい場合、URLは次のようになります。
または
http:// localhost/mysite/mypage?param = http://www.mysite.com/page2?a = \&b = ...
動作しません。この問題を解決するにはどうすればよいですか?
URLに特殊文字をエンコードする必要があります。参照: http://www.w3schools.com/tags/ref_urlencode.asp
クエリパラメータをエンコードしてからURLを形成する必要があります。ここで必要な関数は encodeURIComponent です。たとえば、
作成する必要があるURLは次のとおりです。
http://localhost/mysite/mypage?param=a=?&b=/
さて、それを仮定? /は変数として提供されます。URLに入れる前にエンコードする必要があります。したがって、この関数を使用してURLを作成しましょう(2つのクエリパラメータが必要です):
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"
この関数は基本的なJSにあり、すべてのブラウザーでサポートされています。
JavaScriptでは、encodeURI()関数を使用できます。
ASPにはServer.URLEncode()関数があります。
HttpServerUtility.UrlEncode in .NET
Javascriptを使用してQueryString値に特殊文字を渡す簡単な方法:
var newURL=encodeURIComponent(uri);
window.location="/abc/abc?q="+newURL;
特殊文字のエンコードを使用する必要があります。参照用に this ページを参照してください。
PHPを使用している場合、これを行う関数 rlencode() があります。
私は以下でしたが、うまくいきます。
const myQueryParamValue = "You&Me";
const ajaxUrl = "www.example.com/api?searchText="+encodeURIComponent(myQueryParamValue)
文字をURLエンティティに置き換える必要があります。 ここにいくつかの情報