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 array
与php 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->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
【讨论】:
我不想生成网址。 url 是在客户端 (jQuery) 创建的。以上是关于URL 数组代码点火器的主要内容,如果未能解决你的问题,请参考以下文章
尝试导航时服务器 URL 更改为 localhost URL |代码点火器