REST参数的编码为“0”/";不起作用


encode of REST parameter with "/" not working

我在URI上运行REST服务,与类似

localhost/1.0/json/host/:list/

其中:list是要搜索的参数。相应的PHP函数(使用Tonic)

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

正在解码和转义所提供的任何输入。只要不需要真正对输入进行编码,这就可以工作。

相应的js应用程序使用encodeURI组件对输入框中的输入进行编码

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

并向上述REST资源发出jQuery.get

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

如果在输入框中选择了类似"923/50"的输入,则参数被正确编码为

XHR位于"localhost/rest/1.0/json/host/923%2F05/"

但是仍然不可能从我的数据库中获取连接到此参数的记录。我一直都是404。所以我的猜测是不可能对"/"这样的字符进行编码。

我该怎么办才能解决这个问题?

在执行REST调用之前,我通过将"/"字符更改为"|"来管理它。Javascript参数的编码是这样工作的。

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

我的PHP REST服务使用以下内容将它们转换回所需的值

$list = urldecode($list);
$list = mysql_real_escape_string($list);
$list = str_replace("|", "/", $list);