1

$.get(url, function(response){ /* ... */});でデータをロードする jQuery を使用した JavaScript が少しあります。 データはそのままのテキスト ファイルであり、その応答関数で JavaScript によって処理されます。

これは非常にうまく機能しましたが、マシンでこの問題に遭遇しました: 同じコードを使用すると、次のエラーが表示されます:

XML 解析エラー: 整形式ではありません 場所: moz-nullprincipal:{74091275-3d54-4959-9613-5005459421ce} 行番号 1、列 16: image:tiles.png; ---------------^

これを別のサーバーからロードすると、完全に機能します。このエラーが発生するのは、自分の PC でホストしている場合のみです (以前は、Ubuntu を実行し、Apache でページを提供している自分の PC でも完全に機能していたことに注意してください)。何度も頭を悩ませた後、ロードしているファイル名の拡張子を変更すると、正常に機能することがわかりました。ファイルの名前は以前は「test.sprite」でしたが、そのときにエラーが発生しました。名前を「test.txt」に変更すると、問題なくロードされます。

このエラーは~どうやら~私のシステムの最近のアップグレードと一致しているようです。Ubuntu 10.something を 12.04 にアップグレードしました。ファイルの拡張子に応じて異なるヘッダーを送信する原因となっていることに気付かなかったApache構成に何らかの更新があったと思います(ここで名前が付けられた2つは同じです-.txtは実際には単なる.sprite へのシンボリック リンク)。

だから私は差し迫った問題の解決策を持っていますが、システムの特異性に屈したくはありません. ファイルの名前を変更せずにこれを修正する方法はありますか?

4

2 に答える 2

1

私は apache の専門家ではないことに注意してください。ただし、正しい方向に向けるにはクラックが必要です。

定義されていない場合、jQuery AJAX 関数は content-type が Apache が送り返したヘッダーであると想定します。Chrome でコードを実行し、開発者ツール (Ctrl + Shift + J) を開き、[ネットワーク] を選択すると、応答を簡単に確認できます。関連するリクエストをクリックすると、コンテンツ タイプを含むヘッダーが返されます。

Apache 構成では、スプライトのコンテンツ タイプが定義されていない可能性があります。次の行でこれを追加できます。

AddType 'text/plain; charset=UTF-8' .sprite

これは、Apache によって解析される構成ファイルに含まれている必要があります。バージョンに応じて、これは apache.conf、httpd.conf、または別のファイルになります。

これが役立つか、少なくとも正しい方向に向けられることを願っています。Apache を再起動する前に、忘れずに configtest を実行してください。

于 2012-10-22T03:26:23.563 に答える
0

応答ヘッダーの content-type を調べて、サーバーとローカル マシンから受信したヘッダーが同じ content-type (つまり、同じファイル タイプ、同じエンコーディング) であることを確認してください: "content-type:text/ html; charset=UTF-8".

于 2012-10-22T03:29:55.150 に答える