JavaScript
もしくはjQuery
を使って指定したURLのHTTPステータスコードを取得する方法がわからないので教えて頂けないでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
同じドメインであれば、以下のようにすることでもステータスを取得出来ます。
lang
1$.ajax({ 2 url: 'test.html', 3 type: 'GET' 4}).always(function (jqXHR) { 5 console.log(jqXHR.status); 6});
lang
1$.ajax({ 2 url: 'test.html', 3 type: 'GET', 4 statusCode: { 5 404: function() { 6 alert('page not found'); 7 } 8 } 9});
また、jQueryのajaxメソッドは、success、errorなどといったプロパティにより、statusに応じた処理を設定出来ます。
lang
1$.ajax({ 2 url: 'test.html', 3 type: 'GET', 4 success: function(data){ 5 console.log(data); 6 } 7});
さらに、ajaxはDeferredオブジェクトというものを返し、doneやfailなどのメソッドにより、statusに応じた処理を呼び出すことができます。
lang
1$.ajax({ 2 url: 'test.html', 3 type: 'GET' 4}).done(function() { 5 alert('成功'); 6});
これらは、ajax以外にもgetなどのメソッドでも同様です。詳しくは以下を見てください。
APIドキュメント(英語)
なお、外部のサイトであれば同一生成元ポリシーというものに引っかかりますので注意が必要です。
詳しくは以下のURLを見てみてください。
http://garafu.blogspot.jp/2013/07/blog-post.html
投稿2014/09/21 06:09
総合スコア200
0
昔であれば、後に示すコードで取得できたと思うのですが(xhr.statusのところですね)、
最近はセキュリティ上の都合で、通信される側が 'Access-Control-Allow-Origin' ヘッダーを出力していないと
他のサイトへはXMLHttpRequest経由でデータ取得できないようにしているブラウザが出てきました。
URLというのが 自サイトやそういうのを許可したサイトであれば下記方法で取得できると思いますので
一応サンプルとして載せておきますが、外部サイトに対して行いたいんですよね?
なお、GET以外だと応答が異なる場合や、セッションに応じて応答が異なる場合もありますのでその点も気を付けてください。
lang
1$.ajax({ 2 url: "https://teratail.com", 3 type: "GET", 4 success: function(xml, textStatus, xhr) { 5 console.log(xhr.status); 6 }, 7 complete: function(xhr, textStatus) { 8 console.log(xhr.status); 9 } 10});
lang
1$.get("https://teratail.com", 2 function(data, statusText, jqXHR){ 3 console.log(jqXHR.status); 4});
投稿2014/09/20 13:49
総合スコア2604
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
次の情報が参考にはなりませんか?
jQuery の load() http://www.webdesignleaves.com/wp/jquery/489/ より
...
load(url, parameters, callback)
...
パラメータと戻り値
url (String)
要求を送信するサーバ側リソース(読む込むデータ)のURL。
オプションとして jQuery セレクタを使える 。
parameters (String|Object|Array) オプション。
リクエストと一緒に送信するデータ(要求のパラメータとして渡すべきデータ)を指定。
データ型は、文字列、 オブジェクト、オブジェクトの配列のいずれか。
文字列はそのままクエリ文字列として使用される。
オブジェクトは、プロパティがシリアライズされ、 適切にエンコードされたパラメータとして要求に渡される。
オブジェクトの配列は、その nameプロパティと valueプロパティで、名前と値のペアを 指定。
オブジェクトまたは配列で指定した場合、要求には POST メソッドが使用される。
省略した場合と、文字列で指定した場合は、GET メソッドが使われる。
callback (Function) オプション。
応答データ(取得したデータ)がロードされた後に呼び出されるコールバック関数。
この関数に渡されるパラメータは、
・response:応答テキスト(取得したデータ)、
・status:ステータス文字列(success、 error、notmodified、timeout、parsererror)、
・xhr:XMLHttpRequest インスタンス。
...
投稿2014/09/20 13:57
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。