質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.63%

Ajaxを使って外部HTMLを画面に表示する際にmax_input_varsの制限エラーが出る

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 635

ms5025

score 201

 前提・実現したいこと

Ajaxを使って外部HTML(smatyで作成したtpl)を画面の特定部分に表示しています。
検索条件を指定してボタン押下→右部分にajaxで取得したhtmlをそのまま表示、といった作りです。

下記のエラーが出ている為解決したいです。

テスト環境ではうまくいっていたのですが本番データが大量のため、
戻りのhtmlがかなり大きいサイズになって戻ってきていますが、やはりそれが原因なのでしょうか?

また、2,3回検索を繰り返した後に出る事が多く
どこかでキャッシュかなにかで膨らんでいるのか?よくわからない状態です。

 発生している問題・エラーメッセージ

unknown input variables exceeded 1000. to increase the limit change max_input_vars

 該当のソースコード

param1~4は画面で指定された検索条件とお考え下さい。
これらの値にはたいしたものは入っておらず、コード、文字列のようなものです。
何度検索ボタンを押下しても、
長さの条件にひっかかるような大量なデータは入っていないことは確認済です

    $.ajax({
        type: 'GET',
        url: "hogehoge",
        dataType: 'html',
        data: {"param1": param1, "param2": param2, "param3": param3, "param4": param4, "paramText": paramText}
    }).done(function (html) {
       
       // 取得したhtmlを埋め込みたいエリア
            var $testarea = $(".testarea");
            // エリア内クリア
            $testarea .empty();
            // 取得したhtmlを追加
            $testarea .append(html);

    }).fail(function(jqXHR, textStatus, errorThrown) {
      //エラー時処理
    }); 

 補足情報(FW/ツールのバージョンなど)

1度にPOST出来る数に上限が設けられているようですが、getで取得するhtmlの大きさにも
やはり上限があるのでしょうか?
max_input_varsの初期値を安易に変えるのはちょっと、と思い質問してみました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2018/12/04 11:05

    Ajax関係なく、php側の問題と思われますが、本番と検証環境のmax_input_varsの値は同一の設定となっていますか?

    キャンセル

  • ms5025

    2018/12/04 11:11

    max_input_varsの値は同じです。しかしこの値を大きくしたりするのは問題の解決になっていない気がするのでこのサイズを広げたりする解決方法は取りたくない感じです。

    キャンセル

回答 3

checkベストアンサー

+1

リクエストのパラメーター数が1000を超えているという内容ですね。
それが想定どおりなのであれば、サーバー(PHP)側の設定変更が必要となります。

意図していない内容であれば、どのようなリクエストが送られているか
確認してみてはいかがでしょうか。
ChromeであればデベロッパーツールのNetworkタブから
リクエストの内容が確認できます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/04 13:24

    ありがとうございます
    $_GET
    ["param1"] => array(3) {
    [0] => string(4) "1,10"
    [1] => string(4) "1,20"
    [2] => string(4) "1,25"
    }
    ["searchText"] => string(12) "けんさくわーど"
    ["_"] => string(13) "1543897070791"

    $_POST
    array(0) {
    }

    になります。
    ていうか
    ["_"] => string(13) "1543897070791"
    ↑これなんだろう??

    ちょっとわからないんですが、一応想定してるようなものが送信されています。

    キャンセル

  • 2018/12/04 15:08

    「_」は$.ajaxがキャッシュ避けのために自動的に付加される値となります。$.ajaxのcacheオプションはデフォルトで「false」なので、「_」を付加したくない場合$.ajaxのオプションに「cache:ture」を付加することになります。
    が、この場合、ブラウザでキャッシュを参照してしまうことになるので、想定される結果が得られない場合があります。

    キャンセル

  • 2018/12/05 14:22

    ありがとうございます!そうだったのですね!
    キャッシュ避けのために自動的に付加される値と初めて知りました。
    勉強になりました。

    POSTで今の所対応していますが、どこか自分のソースにおかしいところがあるかもしれません
    引き続き調査してみます。

    キャンセル

+1

とりあえず送ったデータをデベロッパーツールで確認してみてはいかがでしょうか。
なんとなく大量のCOOKIEがあるのではという気がします。

【Chrome デベロッパーツール Networkパネルの使い方 | Web Tips】
http://weback.net/utility/1491/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/05 14:23

    ありがとうございます。確認してみます!
    >大量のCOOKIEがあるのではという気
    えー

    確認してみます。
    戻りの値ではなく、送信の値ということですよね。
    何か変なことをしてる可能性があるので調査してみます。
    ありがとうございます。

    キャンセル

0

input variablesなのでレスポンス(戻り)よりもリクエスト(送信)の方の問題ですね。
GETって結局URLパラメータなので、「URLとして使える最大文字数」に引っかかっているのではと思います。
全角文字列などはパラメータ時はURLエンコードされているものですので、それによって「URLとして使える最大文字数」を超えてしまったのかなあと。

実際に投入されたデータを提示されるともっと具体的な検証やアドバイスが得られるかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/04 13:43

    URL長についてはあくまで可能性の問題ですね。
    別回答のコメントで提示されているように想定していないものがくっついてきているようですし。
    (というか別回答のコメントで$_GETの結果を出されてますけど、「ネットにあげるのは難しい」のではなかったんですか?)

    キャンセル

  • 2018/12/04 14:49

    $_GETの結果はもちろんテコ入れしています。
    これに関しては
    >param1~4は画面で指定された検索条件とお考え下さい。
    >これらの値にはたいしたものは入っておらず、コード、文字列のようなものです。

    で十分雰囲気はつかめるかと思います。
    この一文以上のデータということは
    もっと具体的なデータの提示かと思いました。

    キャンセル

  • 2018/12/04 14:54

    あ、そうです。テコ入れマスクなしの具体的なデータのことでした。
    ひとまずこちらで再現確認がとれない以上はそちらでエラーなしで通ったやり方を正とするしかなさそうに思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.63%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る