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

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

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

449閲覧

[jQqery] ブラウザによって、ajax()送信後 .done()でデータを受取れない。

xjaPANDA

総合スコア124

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/09/09 07:41

編集2017/09/09 07:43

下記のコードはフォームから非同期でテキストデータを送信する際の.ajax()の部分です。
送信先のphp側で、バリテーションをかけています。php側で空白や文字数が多い場合は、エラーメッセージをjsonで出力し、エラーがない場合は、送信されたデータをデータベースへ登録し、送信完了のメッセージをjsonで出力しています。エラーと成功どらも、josnデータのメッセージをdone()内で受取り条件分岐することで、指定したタグ内に数秒メッセージを表示しています。

ここで分からないことがありまして、Google Chromeで一連の動作が、正常に動作し、一方でFirefoxとIE11では、送信が成功したのみに、.done()内でalert(data);しても、アラートダイアログが表示されず、その後の処理もされていません。従って、送信完了時のメッセージも表示されません。ただデータベースには登録されているのでajax送信は成功しています。

Google Chromeでは正常に動くので、FireboxとIE11上では、何が作用して、このようになるのかが知りたいと思い質問してみました。心当たりがありましたら宜しくお願いします。

<script> $(document).ready(function(){ $("#form").submit(function(event){ event.preventDefault(); var formData = $('form').serialize(); $.ajax({ url: 'http://example.com/test/comment_post/', type:'POST', data: formData, timeout: 10000, dataType: 'json', }) .done(function(data){ if(data.length ==1){ //エラーがある場合 jsonデータを取得できる。 $('#notice').append('<div class="message">' + data[0] + '</div>'); setTimeout(function() { $("#notice").html(''); }, 2000); }else{ //送信が成功した場合 FirefoxとIE11ではjsonデータを取得できない。 alert(data); $('#notice').append('<div class="message">' + data[0] + '</div>'); $("#form")[0].reset(); setTimeout(function() { $("#notice").html(''); }, 2000); } }) .fail(function(){ }) .always(function(){ }); }); }); </script>

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

Google Chromeでは正常に動いてしまうので、javascript部分に問題があると思っていましたが、実はphp側のjsonの出力の際に問題があり、下記のように、ヘッダーの下でechoしていますが、その下にも処理を書いていたのですが、それらをheaderの上の行に書き換えたら正常に動くようになりました。今後気おつけたいと思います。

header("Content-Type: application/json; charset=utf-8");
echo json_encode($success, JSON_PRETTY_PRINT);
//echoの下に処理を書いてはだめ

投稿2017/09/09 08:52

xjaPANDA

総合スコア124

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問