0

我同样在 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应用使用encodeURIcomponent对输入框中的输入进行编码

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

并触发 jQuery.get 到上述 REST 资源

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

如果在输入框中选择了像“923/50”这样的输入,则参数被正确编码

XHR 在“localhost/rest/1.0/json/host/923%2F05/”

但是仍然不可能从我的数据库中获取连接到这个参数的记录。我一直得到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 回答