• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Ajaxはサーバ介さないとxmlファイル読めない?)

Ajaxでxmlファイルを読むにはサーバを介さないという制約はあるのか?

このQ&Aのポイント
  • 会社で新たに開発するシステムのプロトタイプ作成中に、ExtJsというフリーのフレームワークを利用して一覧画面を作成しようとしています。しかし、外部ファイル(xml or json)からデータを取得する際に問題が発生しています。Ajaxでxmlファイルを読む場合、サーバを介さないと読み込めないのか、ローカル上での読み込みは不可能なのか、知見がないため困っています。
  • 会社で新たなシステムのプロトタイプを作成中です。一覧画面をgridで実装しようとしていますが、データを外部ファイル(xml or json)から取得することができません。Ajaxでxmlファイルを読む場合、サーバを介さないと読み込めないという情報を見つけたため、ローカル上での読み込みは不可能なのかどうか確認したいです。
  • ExtJsを使用して一覧画面を作成していますが、外部ファイル(xml or json)からデータを取得できません。Ajaxでxmlファイルを読む場合、サーバを介さないと読み込めないという情報があるため、ローカル上では読み込みができないのかどうか知りたいです。知識のある方がいないため、困っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • NARH
  • ベストアンサー率82% (88/107)
回答No.3

> しかし、プロトタイプで提出する先はまた別ですので、なるべくHTMLだけで動作させたいんですよね^^; そのプロトタイプが、別の開発のインプットになるのか、プロトタイプとして完結するのか(コンペになっている場合はそうですね)わかりませんが、サーバとの通信部分を実装されるのであれば、動作させるのにサーバを構える必要があるので - READMEを用意して動作させる手順をまとめて一緒に提出 - ソースとは別にリファレンスサイトを伝える とか、通信する部分があるのでサーバが必要なのですが、どうしますか?と先方と納品方法について協議して決めたらどうですか? どうしてもHTMLで完結しなければならないのであれば、ダミーデータのjsファイルを用意して script タグで読んじゃうとか(ExtJS のサンプルサイトではよくやってます) > >click のイベントを取れるので、それに合わせてjavascript で遷移させる方法もあるかと。 > これは、項目個別にできますか? > また、下線等のスタイルシートの指定等できますか? 可能か不可能かであれば可能だと思います。 もし、a タグがあったり、なかったり、条件によってかわってくるのであれば、プログラムが煩雑になってくるとおもいます。 僕なら読み込むデータの定義で、シンプルにまとまられないかなと考えるかなぁ

miyahiro0730
質問者

お礼

回答ありがとうございます。 今回は、プロトタイプで完結でした。 後ほど、それを元にFlexか他のRIAの参考にする流れでした。 やはりWebサーバを介さないとダメなようですね。 大変勉強になりました! ありがとうございます。 また、遷移に関しても別途renderでの定義を追加したら要望通りの処理ができました。

その他の回答 (2)

回答No.2

>Q.Ajaxでxmlファイルを読む場合、サーバを介さないと読み込めない? XMLデータとして読み込むには、MIME-Typeがxmlのものになっている必要があります。 ウェブサーバーを経由しないとMIME-Type(content-typeヘッダ)が付与されませんし、 サーバーの設定などによってはxmlではなくtextのMIME-Typeが付与されることもありますので、 そういう場合にresponseXMLを使用できなくなります。 ですが、一部のブラウザではoverrideMimeType()というメソッドがありますので、 send()の前に xhr.overrideMimeType('application/xml'); などとしておくと、XMLデータとして扱えるようになります。 ローカルをサーバーにするのが手っ取り早いかもしれませんけどね。 データベースを使わないのであれば、Macならウェブサービスを実行するだけですし、 WindowsならAnHttpdが簡単だと思います。 フレームワークやライブラリを使用する場合は、そのライブラリ独自の動作制限がありますので、 ライブラリ専用のMIME-Typeを上書きするメソッドを呼び出すか、 ライブラリそのものを改変する、 もしくは希望する機能があるライブラリへの乗り換えをすることになると思います。 別途質問の方はわかりません。

miyahiro0730
質問者

お礼

回答ありがとうございます。 >XMLデータとして読み込むには、MIME-Typeがxmlのものになっている必要があります。 >ウェブサーバーを経由しないとMIME-Type(content-typeヘッダ)が付与されませんし、 >そういう場合にresponseXMLを使用できなくなります。 そうだったんですね。ファイルを読み込むだけだと思っていたため、サーバとか関係ないと思っていました。 ありがとうございます。 結果ですが、固定値で良いという事だったので固定値にします。 ありがとうございます。 また別途質問に関しても、renderを定義する方法で解決しました。

  • NARH
  • ベストアンサー率82% (88/107)
回答No.1

ExtJS いいですよね。難しいですけど。 サーバーサイドはJSON吐くだけなんで楽なんですが、デバッグが面倒なのがちょっと大変。 間違ってるかもしれませんが、javascript ってローカルのファイルにアクセスできなかったと思います。 それができちゃうと、アクセスしただけでローカルのファイルを読み込んで、どこかに送れちゃうサイトが容易にできちゃうので。 #新しめのブラウザですと File API ってのがあるようですが、ちょっと用途が違うみたいです。 #ファイルのアップロードのようにユーザの操作が必要なので。 で、xmlをサーバに置くとしても、ドメインが異なるサーバですとまた面倒なことに。 手っ取り早く、ローカルにWebサーバを立ててしまうのが楽かと思います。 grid と template を組み合わせても良いですし、画面遷移したいだけであれば、click のイベントを取れるので、それに合わせてjavascript で遷移させる方法もあるかと。

miyahiro0730
質問者

お礼

回答ありがとうございます。 >手っ取り早く、ローカルにWebサーバを立ててしまうのが楽かと思います。 やっぱりそうですか。。。 しかし、プロトタイプで提出する先はまた別ですので、なるべくHTMLだけで動作させたいんですよね^^; >grid と template を組み合わせても良いですし、 Ext.Templateクラスの事でしょうか? 会社にて調べてみます。 >click のイベントを取れるので、それに合わせてjavascript で遷移させる方法もあるかと。 これは、項目個別にできますか? また、下線等のスタイルシートの指定等できますか? また、再度質問になりますが、ご回答願います。

関連するQ&A

専門家に質問してみよう