0

同様にURIでRESTサービスを実行しています

ローカルホスト/1.0/json/ホスト/:リスト/

ここで、:list は検索するパラメーターです。対応する PHP 関数 (Tonic を使用)

public function get($list) {
        $list = urldecode($list);
        $list = mysql_real_escape_string($list);

提供された入力をデコードしてエスケープしています。これは、入力が実際にエンコードされる必要がない限り機能します。

対応する js アプリケーションは、encodeURIcomponent を使用して、入力ボックスで行われた入力をエンコードします。

var selectedList = encodeURIComponent($('#SelectList').val());

前述の REST リソースに対して jQuery.get を起動します。

$.get("http://localhost/rest/1.0/json/host/"+ selectedList + "/", function(data) {

入力ボックスで「923/50」などの入力が選択されている場合、パラメータは適切にエンコードされています

「localhost/rest/1.0/json/host/923%2F05/」の XHR

しかし、このパラメーターに接続されているレコードをデータベースから取得することはまだ不可能です。私はいつも404を取得します。したがって、「/」のような文字をエンコードすることはできないと思います。

これを解決するにはどうすればよいですか?

4

1 に答える 1

0

「/」文字を「|」に変更することで管理しました REST 呼び出しを実行する前に。Javascript パラメータのエンコードは、このように機能しています。

selectedHostList = encodeURIComponent(
$('#select_hostlist').val().replace('/','|'));

私のPHP RESTサービスは、以下を使用してそれらを必要な値に変換します

$list = urldecode($list);
$list = mysql_real_escape_string($list);
$list = str_replace("|", "/", $list);
于 2013-09-26T09:02:29.743 に答える