Hatena::ブログ(Diary)

bluespearの適当でやる気の無い日記 RSSフィード

2013-09-08

近状とか

前回の投稿からもう9ヶ月経っているという恐ろしい事実。とりあえず仕事仕事な日々を過ごしてます。

技術本を買っても積む一方になっていて大変よろしくないですね。

2012-12-28

年末ですね

気がついたら年末です。

仕事納めしたので実家に帰ってゆっくりします。

2012-09-01

[js][ruby] jQueryの挙動を調べた

js書くのが久々すぎて完全に忘れてたので、コード汚いけど気にしない。

HTTP Status 2xx系なのにjQueryがエラー扱いするような現象を見かけたので検証してみた。

結論としては1.6.3だと204, 205はエラー扱い。.failでも error : でも同様。

1.7.2なら2xx系は全部成功扱いになってた。バージョンに注意。

少し気になるのがerror扱いになってるはずなのに errorparsererror となっているところ。エラー扱いのコードではパース処理をかけてないはずなのだが...?

xmlが帰ってくることを期待しているので、レスポンスコード2xx系だとパースしようとするも、レスポンスボディはno contentなのでパースに失敗、エラーとして処理、という流れだろうか。

1.7.2では、そこら辺を考えず、2xx系のレスポンスコードが帰ってくれば成功扱い、となっている気がする。

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Demo</title>
    <script src="jquery-1.6.3.min.js"></script>
<!--     <script src="jquery-1.7.2.min.js"></script> -->
<script>
baseurl = "http://localhost:4567/res/";
$('document').ready(function(){
    $('#run').click(function(event){
        var codelist = new Array(200, 201, 202, 203, 204, 205, 206, 400, 401, 402, 403, 404, 405, 406);

        for(var i = 0; i < codelist.length; i++){
            $('#result').append("req:" + baseurl + codelist[i] + "<br/>");

            var jqxhr = $.ajax({
              url : baseurl + codelist[i],
              dataType : "xml",
              async : false,
              success : function(msg){
                  $('#result').append("success" + new XMLSerializer().serializeToString(msg) + "<br/>");
              },
              error : function(xmlhttpreq, msg){
                  $('#result').append("error" + msg + "<br/>");
              }
            });
//              .fail(function() { $('#result').append("error" + "<br/>"); });
        }
    });
});
</script>
</head>
  <body>
<p>jQueryのレスポンスコードとAjaxのエラー処理の検証コード</p>
<p>1.6.3だと204, 205はエラー扱い。.failでも error : でも同様</p>
	<input type="button" id="run" value="RUN"/>
	<div id="result"></div>
  </body>
</html>

サーバの方はRubysinatra使ってさっくりと。(最初知らなくてWEBrickでごりごり書いてたのは秘密)

require 'sinatra'
require 'rubygems'

get '/res/:code' do
    status params[:code]
    headers \
    'Content-Type' => 'application/xml'
    body  "<code>#{params[:code]}</code>"
end

実行結果

req:http://localhost:4567/res/200
success200
req:http://localhost:4567/res/201
success201
req:http://localhost:4567/res/202
success202
req:http://localhost:4567/res/203
success203
req:http://localhost:4567/res/204
errorparsererror
req:http://localhost:4567/res/205
errorparsererror
req:http://localhost:4567/res/206
success206
req:http://localhost:4567/res/400
errorerror
req:http://localhost:4567/res/401
errorerror
req:http://localhost:4567/res/402
errorerror
req:http://localhost:4567/res/403
errorerror
req:http://localhost:4567/res/404
errorerror
req:http://localhost:4567/res/405
errorerror
req:http://localhost:4567/res/406
errorerror

2012-07-01

はてなダイアリーは90日間更新が無いと広告がでる

らしいので更新。もう3ヶ月も経ったんですね。相変わらずゲームはやっておりますが、段々と仕事の時間が増えていきそうな感じです。

2012-04-01

4月になりました

世間エイプリルフールで盛り上がってますが、毎回いいネタが思いつかないので嘘なんてつかないんだ。ほんとだよ。

長かったモラトリアムと言う名の学生生活も終わり、社会人になります。しかし今年は4月1日が日曜日なおかげで1日エクステンドしてるので、微妙な気分で一日を過ごすことでしょう。何はともあれ、折角働けることになったのでがんばりたいと思います。あとゲーム時間もなんとしても確保するぞ。