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

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

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

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

jQuery

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

Q&A

解決済

5回答

5172閲覧

ajaxでインターネットに接続しているかどうかを確認する方法

mcncx

総合スコア16

JavaScript

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

jQuery

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

0グッド

1クリップ

投稿2018/10/22 07:46

編集2018/10/24 03:01

知っている方がいたら教えてください。

ローカルホスト(127.0.0.1)で動くWebがあります。
このWebの中で、あるボタンを押したとき、
外部(インターネット環境)のWebページにアクセスする際に、
ネットワークに接続しているかどうかを判別したいです。

正確には、インターネットに接続されている場合は、
外部Webページからjsonpを返して処理したい

〇接続済み
→そのままjsonpのダウンロード
〇未接続
→「インターネットに接続してください」のアラート

困っているのが、このPC環境がProxyサーバを経由しているために、
外部のURLにアクセスしようとすると、ProxyのID、PWを求められ、
入力しないと外部にアクセスできない点です。
なので、非同期通信が使えません。
(使えるかもしれませんが、やり方がわからず。。。)
(同期通信しないと、ID,PW入力中に処理が先に進んで、
常に「インターネットに接続してください」になってしまう)

通常は外部アクセスはオフラインですが、
ProxyのID,PWを入力することによってオンラインに切り替わります。

このような環境で、インターネット接続済みかどうかを
判別する方法はありますでしょうか。

よろしくお願いいたします。

追伸です。

同期通信で処理をした場合、インターネットに接続していない場合は、
timeoutが使えません。
$.ajax({
timeout: 3000,
async: false
});
の場合は、3秒でタイムアウトしないです。

追記です。

ちなみに、書きそびれて申し訳ないです。
利用ブラウザは、Firefox ver.38 になります。

追記です。

利用しているjQueryのバージョンは
jquery-1.11.1.min.js
になります。

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

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

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

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

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

oikashinoa

2018/10/22 14:23

ajaxで試しているソースを出したほうがいいと思います。(非同期、同期ともに)
mcncx

2018/10/26 07:36

ご指摘ありがとうございます。ひとまず解決しましたので後ほど出します。
m.ts10806

2018/10/26 07:38

解決したようで良かったのですがコメントからしても私の回答では解決に至れていないように思います。自身で回答を書き、自己解決としてはいかがでしょうか
m.ts10806

2018/10/26 07:55

ベストアンサーは移せたはずなのでそちらも。
guest

回答5

0

おそらく非同期を利用する方が簡単です。

※以下は最近のjQuery を前提にしています

javascript

1$.ajax({ 2 timeout:3000, 3 url: 'http://teratail.com' 4}) 5.catch(function(err){ 6 alert('インターネットに接続してください。'); 7});

投稿2018/10/22 19:42

R.Mizukami

総合スコア1086

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

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

mcncx

2018/10/24 02:57

こちら返信遅くなり申し訳ありません。 昨日1日検証しましたが、うまくいきませんでした。 使っているjQueryのバージョンだと思いますが、 catchプロパティがエラーになります。 こちらも後出しで申し訳ありません。 jQuery ver 1.11.1になります 他の設定も含めて再度検証してみます。
guest

0

非同期通信だと、どうしてもProxyのID,PWがクリアできませんでしたので、
同期通信で確認することにしました。

以下、私の取った方法です。

function isConnectNetwork(){ return $.ajax({ type : "get", url : "https://hogehoge.com/ping.php", timeout : 2000, async : false }).responseJSON; } function onCheckNewVersion(){ var json = isConnectNetwork(); if( json == undefined || !json.result ){ alert("インターネットに接続してください"); return false; } (何か処理) }

また、jsonpを使うと、なぜかうまくタイムアウトできなかったので、
jsonpはあきらめました。

ひとまず、上記だとうまく動きました。
皆様ありがとうございました。

投稿2018/10/26 07:48

編集2018/10/26 08:01
mcncx

総合スコア16

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

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

0

重複投稿したので削除します

投稿2018/10/26 07:50

編集2018/10/26 07:53
mcncx

総合スコア16

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

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

0

困っているのが、このPC環境がProxyサーバを経由しているために、

外部のURLにアクセスしようとすると、ProxyのID、PWを求められ、
入力しないと外部にアクセスできない点です。

この点を解決するのも手かと思います。解決しておかないと、なにかと詰まるのでは…?

投稿2018/10/22 08:04

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

mcncx

2018/10/22 08:09

Proxyはマストなので、ここはこの仕様で変えられません。 申し訳ないです。よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2018/10/22 08:12

いえ、Proxyがあっても非同期通信できるようにしたほうがいいのでは?と。同期通信ならできる、というのも気になるところですし。
mcncx

2018/10/23 00:40

なるほど。同期通信ではなく、非同期通信の線で、 と言うことですね! ありがとうございます。こちらで更に検証してみます!
guest

0

ベストアンサー

navigator.onLineでは満たせませんか?

投稿2018/10/22 07:53

m.ts10806

総合スコア80850

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

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

mcncx

2018/10/22 07:57

はい。navigator.onLineでは、ローカルホストに接続しているためか、 常にtrueが返ります。 ちなみに、書きそびれて申し訳ないです。 利用ブラウザは、Firefox ver.38 になります。
m.ts10806

2018/10/22 08:00

んー。 私が以前関わった案件ではローカルサーバーであっても、例えばWiFi切ったりLAN線抜いたりでオフラインになりましたけど、状況がよくわかりませんね。 追記は質問本文にお願いします
mcncx

2018/10/22 08:08

なるほど。もう一度検証してみます。 本文追記、かしこまりました。 ご教授ありがとうございます。
m.ts10806

2018/10/22 19:49

補足ありがとうございます。
mcncx

2018/10/23 00:39

検証結果、やっぱり常に true でした。 補足もありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問