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

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

ただいまの
回答率

89.12%

Laravel+$.ajaxで発生するIE動作の不具合を解消したい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,178
退会済みユーザー

退会済みユーザー

jQueryで$.ajaxを使いデータを取得しようとしているのですが、IEで巧く動作しません。
$.ajax自体が動かないのではなく、以下の条件下でエラーが出ているようなのです。
ご教授宜しくお願い致します。

            $.ajax({
                type: "GET",
                url: "/get.php",
                data: data,
                success: function (html) {
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                   alert('ERROR!');
                }
            });


get.phpは、MySQLからデータをSELECTして返すだけのものです。
こちらはIEでも他のブラウザでもエラー無く正常に動作しています。
ですが、

            $.ajax({
                type: "GET",
                url: "/insert.php",
                data: data,
                success: function (html) {
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                   alert('ERROR!');
                }
            });


insert.phpでデータを保存しようとすると、エラーになります。(ERROR!アラート表示)
プログラム側がおかしいのかなと思ったのですが、Chrome等別のブラウザでは問題なくINSERT、そこから先の処理も問題なく動いています。

INSERTしているのは、

        DB::table('user')->insert([
          'name' => $inputs['name'],
          'member_host' => $_SERVER["REMOTE_ADDR"]
        ]);


と言うような、ごく簡単なものなのです。
Chromeでは問題なく動作するのですが、IEではERROR!になります。
INSERTしているPHP部分をコメントアウトすると、IEではエラーが出ません(先の処理に進みます)

また、一度コメントアウトして先に進んで、そこからPHP側のコメントアウトを戻すと、それ以降はIEでもエラーが出ず、INSERTも無事に行われるようになりました。
ただ、キャッシュやクッキーをクリアしてもう一度チャレンジすると、やはりERROR!がでます。

PHPのバージョンは7.2、Laravelバージョンは5.1です。
IEだけエラーが出てしまう理由は何なのでしょうか?


追記

検証したIEのバージョンは11です。
ご助言頂きまして色々検証してみたのですが、Chrome DevToolsでは特にエラー表示が出ず、IEのツールでは500 Internal Server Errorが出ていました。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • aro10

    2017/08/27 21:29 編集

    IEのバージョンは11でしょうか、サーバー内部のDB保存処理が、ブラウザの種類によって影響を受けることは考えにくいですが、もしかすると$_SERVER["REMOTE_ADDR"]がなんらかの問題かもしれないのでダミーの値にするとどうなるでしょうか 他に考えられる点としてはPHP7.2で7.2はまだベータ版なので一度7.1でやってみることも考えられます。
    その他考えられる点としてはミドルウェアでIEに対して特別な処理をしているところがエラーになっていたり、この場合は同一ドメインなのでCORSの影響は無さそうですが$.ajaxのエラーの詳細をChrome DevToolsでNetタブで見るとどのような表示になっているでしょうか

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2017/08/28 01:22

    IEのバージョンは11です。「IE $.ajax エラー」等でぐぐって、HITした解決方法等も試してみたんですが、どうにも解決に至っていません。IEに対する特別な処理等はしていません。データベースにINSERTする値をダミー値にしても解決しませんでした。Chrome DevToolsにもエラーは表示されていません。PHPのバージョンについては、環境調整してみますので、今から試してみようと思います。たくさんの可能性のご指摘、ありがとうございます!

    キャンセル

回答 1

checkベストアンサー

+2

500 Internal Server Errorが発生との事で、サーバー内部エラーなのでLaravelのstorage/logsにエラーログが出力されていないか確認してみてください。Laravelのログが無い場合は、WebサーバーでエラーになっているのでApacheかNginx等のエラーログ出力先を確認してみてください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/08/28 03:26

    エラーログの確認方法ありがとうございました!
    1366 Incorrect string valueエラーが記録されていたので、エラー名をぐぐって調べたのですが、該当のテーブルはCHARSET=utf8でした。PHP側も同様です。PHPのバージョンを7.0に変更してみたのですが、解決には至っていません。もう少し調べてみます…。

    キャンセル

  • 2017/08/28 03:55

    Laravel5.4からconfig/database.phpのmysqlの設定値がutf8mb4用になっているので、charsetとcollationをutf8用(utf8、utf8_general_ci)にすると改善するかもしれません

    キャンセル

  • 2017/08/30 04:46

    平日に入り検証時間がなかなか取れず、遅くなって済みません。
    データベース側のcharset値や非同期通信時のエンコード等を見直して、無事にIEでも動作させることが出来ました。文字コードが原因でIEでのみ正常動作しなかった、と言う解決になりました。
    エラーログの見方、文字コード助言等、本当にありがとうございました!

    キャンセル

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

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