JQueryのajax()を使って非同期アクセスをした場合、エラーが起こると、
error: function(XMLHttpRequest, textStatus, errorThrown){
// この中に入る
}
このとき、
XMLHttpRequest.statusでエラーコード(404とか)、
XMLHttpRequest.statusTextでエラーメッセージ
が拾えるが、この返り値が、IEとChromeで微妙にちがっている。
以下、そのまとめ
■チェック内容
以下のプログラム
を、
(1)c:/tmp/codetest のフォルダの下に、index.htmという名前で、
(2)Tomcatのベース/webapps/codetestの下にindex.jspという名前で、
それぞれ用意する。
なお、
(1)には、index.htmと同じフォルダに、dummy.htm
(2)には、index.jspと同じフォルダに、dummy.jsp
が置いてあり、dummy.htm、dummy.jspとも、中身は
dummy
とだけ記述されている。
以下、赤字のURLの部分を変えていく
■(1)のファイルパス指定→存在するファイル
上記赤字のURLを「dummy.htm」と記述
としてブラウザに「C:\tmp\codetest\index.htm」と入力し、アクセス
AJAXボタンをクリックする
・IEの場合
dummyと表示される(=アクセスできる)
・Chromeの場合
(ファイルパスはfile:///C:/tmp/codetest/index.htmと書き換えられる)
以下の表示でエラー
--- Error Status ---
status:404
statusText:error
textStatus:error
errorThrown:
■(1)のファイルパス指定→存在しないファイル
上記赤字のURLを「dummy2.htm」と記述
としてブラウザに「C:\tmp\codetest\index.htm」と入力し、アクセス
AJAXボタンをクリックする
・IEの場合
以下の表示でエラー
--- Error Status ---
status:0
statusText:[object Error]
textStatus:error
errorThrown:[object Error]
error name:TypeError
error message:The system cannot locate the resource specified.
error number:-2146697211
error description:The system cannot locate the resource specified.
・Chromeの場合
(ファイルパスはfile:///C:/tmp/codetest/index.htmと書き換えられる)
以下の表示でエラー
--- Error Status ---
status:404
statusText:error
textStatus:error
errorThrown:
■(2)のURL指定→存在するファイルをフルで指定
Tomcatを起動し、index.jspの
上記赤字のURLを「"http://localhost:8080/codetest/dummy.jsp"」と記述
"http://localhost:8080/codetest/をアクセスしたとき
・IEの場合
dummyと表示される(=アクセスできる)
・Chromeの場合
dummyと表示される(=アクセスできる)
■(2)のURL指定→存在するファイルを相対指定
Tomcatを起動し、index.jspの
上記赤字のURLを「"dummy.jsp"」と記述
"http://localhost:8080/codetest/をアクセスしたとき
・IEの場合
dummyと表示される(=アクセスできる)
・Chromeの場合
dummyと表示される(=アクセスできる)
■(2)のURL指定→存在しないファイルをフルで指定
Tomcatを起動し、index.jspの
上記赤字のURLを「"http://localhost:8080/codetest/dummy2.jsp"」と記述
"http://localhost:8080/codetest/をアクセスしたとき
・IEの場合
--- Error Status ---
status:404
statusText:Not Found
textStatus:error
errorThrown:Not Found
・Chromeの場合
--- Error Status ---
status:404
statusText:Not Found
textStatus:error
errorThrown:Not Found
error 0:N
error 1:o
error 2:t
error 3:
error 4:F
error 5:o
error 6:u
error 7:n
error 8:d
■(2)のURL指定→存在しないファイルを相対指定
Tomcatを起動し、index.jspの
上記赤字のURLを「"dummy2.jsp"」と記述
"http://localhost:8080/codetest/をアクセスしたとき
・IEの場合
--- Error Status ---
status:404
statusText:Not Found
textStatus:error
errorThrown:Not Found
・Chromeの場合
--- Error Status ---
status:404
statusText:Not Found
textStatus:error
errorThrown:Not Found
error 0:N
error 1:o
error 2:t
error 3:
error 4:F
error 5:o
error 6:u
error 7:n
error 8:d
■(2)のURL指定→存在しないサーバーアプリ指定
Tomcatを起動し、index.jspの
上記赤字のURLを「"http://localhost:8080/codetest2"」と記述
(webappsの下には、codetest2のファイルは存在しない)
"http://localhost:8080/codetest/をアクセスしたとき
・IEの場合
--- Error Status ---
status:404
statusText:Not Found
textStatus:error
errorThrown:Not Found
・Chromeの場合
--- Error Status ---
status:404
statusText:Not Found
textStatus:error
errorThrown:Not Found
error 0:N
error 1:o
error 2:t
error 3:
error 4:F
error 5:o
error 6:u
error 7:n
error 8:d
■(2)のURL指定→存在しないIPアドレス指定
Tomcatを起動し、index.jspの
上記赤字のURLを「"http://192.168.4.1"」と記述
(192.168.4.1のIPアドレスを持ったサーバーは存在しない)
"http://localhost:8080/codetest/をアクセスしたとき
・IEの場合
--- Error Status ---
status:0
statusText:No Transport
textStatus:error
errorThrown:No Transport
・Chromeの場合
--- Error Status ---
status:0
statusText:error
textStatus:error
errorThrown:
以上。
error: function(XMLHttpRequest, textStatus, errorThrown){
// この中に入る
}
このとき、
XMLHttpRequest.statusでエラーコード(404とか)、
XMLHttpRequest.statusTextでエラーメッセージ
が拾えるが、この返り値が、IEとChromeで微妙にちがっている。
以下、そのまとめ
■チェック内容
以下のプログラム
<HTML> <head> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script> $(function(){ $("#bt1").click(function () { $.ajax({ type: "POST", url: "dummy.jsp", dataType:"html", success: function(msg){ document.open(); document.write(msg); document.close(); }, error: function(XMLHttpRequest, textStatus, errorThrown){ msg="--- Error Status ---" msg=msg+"<BR>"+"status:"+XMLHttpRequest.status; msg=msg+"<BR>"+"statusText:"+XMLHttpRequest.statusText; msg=msg+"<BR>"+"textStatus:"+textStatus; msg=msg+"<BR>"+"errorThrown:"+errorThrown; for(var i in errorThrown) { msg=msg+"<BR>"+"error "+i+":"+ errorThrown[i]; } document.open(); document.write(msg); document.close(); } }); }); }); </script> </head> <body> <BUTTON id="bt1">AJAX</BUTTON> </body> </html> |
を、
(1)c:/tmp/codetest のフォルダの下に、index.htmという名前で、
(2)Tomcatのベース/webapps/codetestの下にindex.jspという名前で、
それぞれ用意する。
なお、
(1)には、index.htmと同じフォルダに、dummy.htm
(2)には、index.jspと同じフォルダに、dummy.jsp
が置いてあり、dummy.htm、dummy.jspとも、中身は
dummy
とだけ記述されている。
以下、赤字のURLの部分を変えていく
■(1)のファイルパス指定→存在するファイル
上記赤字のURLを「dummy.htm」と記述
としてブラウザに「C:\tmp\codetest\index.htm」と入力し、アクセス
AJAXボタンをクリックする
・IEの場合
dummyと表示される(=アクセスできる)
・Chromeの場合
(ファイルパスはfile:///C:/tmp/codetest/index.htmと書き換えられる)
以下の表示でエラー
--- Error Status ---
status:404
statusText:error
textStatus:error
errorThrown:
■(1)のファイルパス指定→存在しないファイル
上記赤字のURLを「dummy2.htm」と記述
としてブラウザに「C:\tmp\codetest\index.htm」と入力し、アクセス
AJAXボタンをクリックする
・IEの場合
以下の表示でエラー
--- Error Status ---
status:0
statusText:[object Error]
textStatus:error
errorThrown:[object Error]
error name:TypeError
error message:The system cannot locate the resource specified.
error number:-2146697211
error description:The system cannot locate the resource specified.
・Chromeの場合
(ファイルパスはfile:///C:/tmp/codetest/index.htmと書き換えられる)
以下の表示でエラー
--- Error Status ---
status:404
statusText:error
textStatus:error
errorThrown:
■(2)のURL指定→存在するファイルをフルで指定
Tomcatを起動し、index.jspの
上記赤字のURLを「"http://localhost:8080/codetest/dummy.jsp"」と記述
"http://localhost:8080/codetest/をアクセスしたとき
・IEの場合
dummyと表示される(=アクセスできる)
・Chromeの場合
dummyと表示される(=アクセスできる)
■(2)のURL指定→存在するファイルを相対指定
Tomcatを起動し、index.jspの
上記赤字のURLを「"dummy.jsp"」と記述
"http://localhost:8080/codetest/をアクセスしたとき
・IEの場合
dummyと表示される(=アクセスできる)
・Chromeの場合
dummyと表示される(=アクセスできる)
■(2)のURL指定→存在しないファイルをフルで指定
Tomcatを起動し、index.jspの
上記赤字のURLを「"http://localhost:8080/codetest/dummy2.jsp"」と記述
"http://localhost:8080/codetest/をアクセスしたとき
・IEの場合
--- Error Status ---
status:404
statusText:Not Found
textStatus:error
errorThrown:Not Found
・Chromeの場合
--- Error Status ---
status:404
statusText:Not Found
textStatus:error
errorThrown:Not Found
error 0:N
error 1:o
error 2:t
error 3:
error 4:F
error 5:o
error 6:u
error 7:n
error 8:d
■(2)のURL指定→存在しないファイルを相対指定
Tomcatを起動し、index.jspの
上記赤字のURLを「"dummy2.jsp"」と記述
"http://localhost:8080/codetest/をアクセスしたとき
・IEの場合
--- Error Status ---
status:404
statusText:Not Found
textStatus:error
errorThrown:Not Found
・Chromeの場合
--- Error Status ---
status:404
statusText:Not Found
textStatus:error
errorThrown:Not Found
error 0:N
error 1:o
error 2:t
error 3:
error 4:F
error 5:o
error 6:u
error 7:n
error 8:d
■(2)のURL指定→存在しないサーバーアプリ指定
Tomcatを起動し、index.jspの
上記赤字のURLを「"http://localhost:8080/codetest2"」と記述
(webappsの下には、codetest2のファイルは存在しない)
"http://localhost:8080/codetest/をアクセスしたとき
・IEの場合
--- Error Status ---
status:404
statusText:Not Found
textStatus:error
errorThrown:Not Found
・Chromeの場合
--- Error Status ---
status:404
statusText:Not Found
textStatus:error
errorThrown:Not Found
error 0:N
error 1:o
error 2:t
error 3:
error 4:F
error 5:o
error 6:u
error 7:n
error 8:d
■(2)のURL指定→存在しないIPアドレス指定
Tomcatを起動し、index.jspの
上記赤字のURLを「"http://192.168.4.1"」と記述
(192.168.4.1のIPアドレスを持ったサーバーは存在しない)
"http://localhost:8080/codetest/をアクセスしたとき
・IEの場合
--- Error Status ---
status:0
statusText:No Transport
textStatus:error
errorThrown:No Transport
・Chromeの場合
--- Error Status ---
status:0
statusText:error
textStatus:error
errorThrown:
以上。