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

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

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

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

2回答

1159閲覧

ajaxの戻り値を正しく取得できない

shaketonori

総合スコア22

JavaScript

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

1クリップ

投稿2023/01/10 01:42

前提

ajaxの戻り値をうまく取得できないで困っています。
ajaxは該当期間にデータがあるか否かをチェックし、有る場合は処理を続け、
無い場合は処理を中断しようというものです。
text形式で取得した response ですが、「yes」または「no」が入っています。
ところが「yes」または「no」をうまく判定できないで困っています。

ここで、テキストとしてちゃんと取得しているかどうかを確認するために、間に
「yagisan」という変数をかまして試したところ。
コンソールに以下の結果が表示されました。

【データが無いとき】
response================no
yagisan================no
noでしたよ================

【データが有るとき】
response================yes
yagisan================no
noでしたよ================

データが有るときは
response================yes
yagisan================yes
yesでしたよ================
なならなければいけないはずですが、なぜこのようなことになるのかさっぱりわかりません。
ここのところajaxの非同期処理にイジメられて翻弄されています。

どなたか教えて下さい。よろしくお願いします。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • ▲▲機能を動作するようにする

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

エラーメッセージ

該当のソースコード

javascript

$.ajax({ type: "POST", url: "/meisaiexistcheckbyperiod", data: {"startDate":startDate, "endDate":endDate, "mode":mode}, dataType: 'text', // 通信成功時の処理 }).done(function(response) { console.log("response================" + response); let yagisan; if(response=="yes"){ yagisan = "yes"; }else{ yagisan = "no"; } console.log("yagisan================" + yagisan); if(yagisan=="yes"){ console.log("yesでしたよ================"); if(window.confirm("指定期間  " + startDate + " ~ " + endDate + "  のモニタリストを発行します。")){ // ここで実行 //return true; }else{ // 処理中断 return false; } }else{ console.log("noでしたよ================"); //window.alert("指定の期間に売上明細データはありませんでした。"); // 処理中断 return false; } // 通信失敗時の処理 }).fail(function() { alert("明細データのチェック検索ができませんでした。管理者にご連絡下さい。"); // 通信の成功失敗に関わらず必ず行う処理 }).always(function() { });
### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2023/01/10 02:02

Fiddler などのキャプチャツールを使って応答を調べる、ブラウザのデバッガでステップ実行しながら変数を調べるというようなことはしたんですか? したのであればその結果を書いてください。 
shaketonori

2023/01/10 05:59

素早い反応、ありがとうございました。 デバッガを使って確認したところ response の中身は「response\r\n」となっていて改行コードがくっついてしまっていました。普段デバッガは使わないので、時間がかかってしまい案した。 でも、なぜ改行コードがついてしまったのかの原因がわかりません。またどのようにしたら改行コードを取り除くことができるでしょうか。 因みに response の送信元はJavaで String result; int count = 0; if(rset != null){ while(rset.next()){ count++; } if(count == 0){ // 1件もヒットしなかったとき → 期間内に売上明細がなかった result = "no"; }else{ // 1件以上ヒットしたとき → 期間内に売上明細があった result = "yes"; } }else{ // 1件もヒットしなかったとき result = "no"; } out.println(result); こんな風に書いています。
退会済みユーザー

退会済みユーザー

2023/01/10 07:04

> out.println(result); Java の out.println は改行コードも出力するのではないですか?
guest

回答2

0

ベストアンサー

デバッガを使って確認したところ response の中身は「response\r\n」となっていて改行コードがくっついてしまっていました。

out.println(result);

Java の out.println は改行コードも出力するのではないですか?

改行コードを出力しない print メソッドというのもあるそうなのでそれを使ってはいかがですか?

【5分でわかる】Java printメソッドで文字列を出力する方法まとめ
https://style.potepan.com/articles/17674.html

投稿2023/01/10 07:08

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

shaketonori

2023/01/10 08:21

ありがとうございます。printメソッドにしたら、改行コードを吐かなくなりうまくいきました。 これまで Java側からはわざわざ json の形式にして出力していたんですが、今回 text 形式で出力したところトラブルになってしまいました。 それ以前の問題としてキチっとデバッガを使って確認しないといけませんね。勉強になりました。ありがとうございました。
guest

0

レスポンス内容は、純粋にyesだけでしょうか。周辺に空白や改行などが入っていたりはしませんか?

投稿2023/01/10 02:00

maisumakun

総合スコア145184

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

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

shaketonori

2023/01/10 06:06

早速の回答、ありがとうございました。 ご指摘のとおり response に改行コードがくっついていました。 なぜこうなったのかはよくわかりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問