2

Webアプリケーションにcakephpajaxページ付けを使用しています。

このアプリケーションでは、検索フィルターも実装しました。ユーザーがレコードをフィルター処理するとき、GETメソッドを使用して検索フォームを送信し、コントローラーでフィルター変数を取得して、このようにページネーターヘルパーに追加します。

$this->paginator->options(array(
    'url' => array_merge($this->passedArgs, array('?'=> $query_string)), 
    'update' => '#tlist', 
    'evalScripts' => true)
);

私の問題は、私のページネーションリンクで私のすべてが変換されて&以下を参照して太字の部分を見るということです。

<a href="/sites/tutor/users/ajaxtutor/page:2?gender%5B0%5D=1gender%5B1%5D=2" id="link-1795722171" />;

そして、リンクをクリックすると、次のようにクエリ文字列が表示されます。

[gender] => Array
        (
            [0] => 1
        )
[amp;gender] => Array
        (
            [1] => 2
        )

amp;クエリ文字列からこの余分なものを削除する方法。

誰かがこの状況に対処する方法を助けることができますか?

4

2 に答える 2

2

に変換する必要があり& ます&amp;&HTMLコードにそれ自体を含めることは正しくありません。

これは、HTMLソースでのリンクの外観です。

<a href="/sites/tutor/users/ajaxtutor/page:2?gender%5B0%5D=1&amp;gender%5B1%5D=2" id="link-1795722171">2 </a>

したがって、データの受信に問題がある場合は&amp;、コード内のが原因ではありません。

クエリ文字列のキーはとであることに注意してgender[0]くださいgender[1]。HTMLプロトコルには、クエリ文字列に配列の概念がないため、サーバーに配信される正確な名前ですが、PHPは値を解析し、それらから配列を作成します。

于 2012-11-24T07:01:12.823 に答える
0

guffaが言ったように、変換はhtml標準であるため、から& へは正しいです。&amp;

問題は、cakephpが&amp;代わりに含まれているページネーションリンクのhref部分を選択&し、それをajaxurlセクションに配置することでした。たとえば、以下を参照してください。

  • ページ付けリンク:
  • <a href='somedomain.com?&amp;a=1&amp;b=2>1</a>
  • 生成されたajaxコード:
  • $("#link-1478709635").bind("click", function (event) {
        $.ajax({
            url: "somedomain.com?&amp;a=1&amp;b=2"
        });
        return false;
    
  • リンクをクリックすると&amp;、代わりにリンクが表示さ&れます。

  • 解決策として、GETメソッドの代わりにPostメソッドを使用して、次のようなページ付けオプションのページ付けリンクを使用してデータをポストバックしました。 'data'=>http_build_query($this->request->data),

于 2012-11-30T05:29:44.360 に答える