1

私は codeigniter (codeigniter の初心者) を使用しています。

getproducts($p1, $p2, $p3)コントローラーに機能があります。

getproducts/0/0/jquery-script (ajax) から呼び出すと動作しますが、次のように URL を呼び出したい:

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

うまくいきません。(ローカル Web サーバーにとどまる代わりに、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

{"0":"13","1":"24"} は URL エンコードする必要があります。

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

于 2013-06-10T19:01:12.117 に答える
1

お使いのブラウザは、それが URL であるとは認識せず、(何かを検索していると考えて) Google に移動すると思います。

URL の主要部分

URL 構文の完全な BNF の説明は、セクション 5 に記載されています。

一般に、URL は次のように記述されます。

   <scheme>:<scheme-specific-part>

URL には、使用されているスキームの名前 ()、コロン、文字列 () が含まれており、その解釈はスキームによって異なります。

スキーム名は一連の文字で構成されます。小文字の「a」~「z」、数字、プラス記号 (「+」)、ピリオド (「.」)、およびハイフン (「-」) を使用できます。弾力性のために、URL を解釈するプログラムは、スキーマ名の大文字を小文字と同等に扱う必要があります (たとえば、「http」だけでなく「HTTP」も許可します)。

したがって、英数字、特殊文字「$-_.+!*'()」、および予約された目的で使用される予約文字のみが、URL 内でエンコードされずに使用できます。

schemepart     = *xchar | ip-schemepart

http://www.faqs.org/rfcs/rfc1738.htmlを参照してください。

于 2013-06-10T00:09:19.100 に答える
0

この質問に対するより良い答えは、組み込みの uri to 連想配列ハンドラーを使用することだと思います。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 に答える