1

我正在使用 codeigniter(codeigniter 的新手)。

getproducts($p1, $p2, $p3)在控制器中有一个功能。

当我getproducts/0/0/从我的 jquery-script (ajax) 调用时,它可以工作,但我想这样调用 URL

getproducts/0/0/{"0":"13","1":"24"}

它不起作用。(我进入 google-search-results 而不是留在我的本地网络服务器上)

我基本上想在使用codeigniter时以某种方式将数组传递给url中的函数。我该如何解决?请帮忙 :-)

4

5 回答 5

2

我认为您至少应该调整关于 URL 中允许的字符的 Codeigniter 配置,以包括大括号、逗号和双引号:

$config['permitted_uri_chars'] = ',{}"a-z 0-9~%.:_()@\-';

但是,您最终使用 Google 的原因可能是其他原因(似乎与 Codeigniter 无关)

于 2013-06-09T23:33:18.880 回答
1

你的浏览器不认为那是一个 URL 并导航到谷歌(认为你正在搜索某些东西),我想。

URL的主要部分

URL 语法的完整 BNF 描述在第 5 节中给出。

一般来说,URL 的写法如下:

   <scheme>:<scheme-specific-part>

URL 包含正在使用的方案的名称 (),后跟一个冒号,然后是一个字符串 (the),其解释取决于方案。

方案名称由一系列字符组成。允许使用小写字母“a”--“z”、数字以及字符加号(“+”)、句点(“.”)和连字符(“-”)。为了弹性,解释 URL 的程序应该将大写字母视为等同于方案名称中的小写字母(例如,允许“HTTP”以及“http”)。

因此,只有字母数字、特殊字符“$-_.+!*'()”和用于其保留目的的保留字符可以在 URL 中未编码地使用。

schemepart     = *xchar | ip-schemepart

请参阅http://www.faqs.org/rfcs/rfc1738.html

于 2013-06-10T00:09:19.100 回答
1

{"0":"13","1":"24"} 应该是 url 编码的。

http://php.net/manual/en/function.urlencode.php

于 2013-06-10T19:01:12.117 回答
0

我认为这个问题的更好答案是使用内置的 uri 来关联数组处理程序。请参阅http://www.codeigniter.com/user_guide/libraries/uri.html?highlight=uri 这停止了所有令人讨厌的配置允许的 uri 字符。

您的 uri 将是:getproducts/p1/0/p2/0/p3/0/p5/13/p6/1/p6/24 处理程序将类似于:

 function get_product()
 {
      $object = $this->uri->uri_to_assoc(4);
 }
于 2015-09-02T11:25:04.810 回答
-1

您需要使用URI 类的 $this->uri->assoc_to_uri()

手册写道,

将关联数组作为输入并从中生成 URI 字符串。数组键将包含在字符串中。例子:

$array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');
$str = $this->uri->assoc_to_uri($array);
// Produces: product/shoes/size/large/color/red
于 2013-06-10T06:15:05.073 回答