コードはかなり美しさにかけて、めっちゃ遅いんちゃう!?くらいの勢いですがとりあえず動きます。
ポイント。
- 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) ) を使うことにしました。
以下、ざっくり手順を。
- まず、StringBufferなどでJSON文字列を作成します。
- 次にStringBuffer.toString.toCharArrayでchar[]配列を取り出します
- char[]配列の長さでbyte[]配列を作成
- ひたすらchar[]配列をループして1つずつbyte[]配列にコピー!!!(これなんかええのんないかなー?)
- 最後にresponseDirectに渡してやって完了。
あ、ContentTypeは「"text/html; charset=UTF-8"」みたいな感じで。
とりあえず動きました。ええ、とりあえず。。。
まぁここの部分はファイルアップロードで1個画像を扱うだけなんで、もういいかな?とも思ったり。
まぁ後で時間できたときに見直しですねぇ。今は動けばいいや(涙
0 件のコメント:
コメントを投稿