URL 数组代码点火器

Posted

技术标签:

【中文标题】URL 数组代码点火器【英文标题】:URL array codeigniter 【发布时间】:2013-06-05 14:09:57 【问题描述】:

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

我在控制器中有一个函数getproducts($p1, $p2, $p3)

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

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

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

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

【问题讨论】:

我认为你需要在这种东西中使用JSON,因为javascript arrayphp array不同 你到底是什么意思? JSON格式不正确吗? 这是一个 GET 请求。但是您要求做的更适合 POST 请求,因为您可以更轻松地使用 POST 传递 JSON 对象 啊当然。谢谢! 尤文图斯18,让您的评论成为答案!所以我可以接受。 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

网址的主要部分

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

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

   <scheme>:<scheme-specific-part>

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

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

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

schemepart     = *xchar | ip-schemepart

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

【讨论】:

谢谢!我会看看这个。【参考方案3】:

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

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

【讨论】:

【参考方案4】:

我认为这个问题的更好答案是使用内置的 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);
 

【讨论】:

【参考方案5】:

您需要使用URI class's $this-&gt;uri-&gt;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

【讨论】:

我不想生成网址。 url 是在客户端 (jQuery) 创建的。

以上是关于URL 数组代码点火器的主要内容,如果未能解决你的问题,请参考以下文章

代码点火器 URL 更改

尝试导航时服务器 URL 更改为 localhost URL |代码点火器

代码点火器 | .htaccess 从 url 中删除 index.php

代码点火器 |获取上一个 URL 并用作返回上一页的按钮

代码点火器分页

代码点火器错误“地址不被理解”