SyntaxHighlighter

2011年8月15日月曜日

GAE/J Slim3でScenic環境下でjQuery uploadを利用&Jsonで戻りデータ取得

結論からいいますと、やっつけデス。。。
コードはかなり美しさにかけて、めっちゃ遅いんちゃう!?くらいの勢いですがとりあえず動きます。

ポイント。

  • jQuery.uploadはjsonでリクエストした際、iframeを利用してシームレスなアップロードを実現するためJsonデータが戻ってくる際のContentTypeが「text/html」でないと<pre>タグがついてしまってうまく処理できない
  • Scenic側でNavigationオブジェクトを渡す際、responseJsonで渡すと強制的に「text/JavaScript」になってしまう

そらそうや、ってお話です。JSONですし。
responseJsonした後にContentTypeを強制的に変えれればなんとかなりそうだったんですが、全く変えれず。。。setContentTypeは意味をなさない。
responseJsonしたあとにキャッシュ的なんと_out〜とかいう変数に1が入ってるのがポイントなんじゃろか?

response( String ) でJson文字列を自分で作って渡してやればいいんじゃないか!?と思いましたが、強制的に「text/Plain」になりました。

結果、responseDirect( byte[], String(=ContentType) ) を使うことにしました。
以下、ざっくり手順を。


  1. まず、StringBufferなどでJSON文字列を作成します。
  2. 次にStringBuffer.toString.toCharArrayでchar[]配列を取り出します
  3. char[]配列の長さでbyte[]配列を作成
  4. ひたすらchar[]配列をループして1つずつbyte[]配列にコピー!!!(これなんかええのんないかなー?)
  5. 最後にresponseDirectに渡してやって完了。

あ、ContentTypeは「"text/html; charset=UTF-8"」みたいな感じで。

とりあえず動きました。ええ、とりあえず。。。

まぁここの部分はファイルアップロードで1個画像を扱うだけなんで、もういいかな?とも思ったり。
まぁ後で時間できたときに見直しですねぇ。今は動けばいいや(涙

0 件のコメント:

コメントを投稿