ここで奇妙なものを手に入れました、それは確かに私の頭を掻きます。
プログラム: iFrame/AJAXを介してスプレッドシートをサーバーにアップロードします。.JSP / APACHE POIは、データをXML形式で読み取り、検証し、返します。JavaScriptはXMLを読み取り、視覚的に確認できるようにテーブルに表示します。
問題: ユーザーがページを更新するまで、プログラムは完全に機能します。XMLは正しく返されません。フォーマットは維持されますが、データが欠落しています。別のファイルをアップロードしたり、再度更新したりしても何も変わりません。XML応答は同じままです。
XML:
<records>
<groups>
<group>
<name>
<cell>B9</cell>
<value>Group Name</value>
<error></error>
</name>
<...more data...>
</group>
</groups>
<data>
<groups>3</groups>
<users>0</users>
<errors>5</errors>
</data>
</records>
それがどのように表示されるかですが、代わりに更新すると、戻り値は次のようになります。
<records>
<groups />
<data>
<groups>3</groups>
<users>0</users>
<errors>5</errors>
</data>
</records>
下の3つの数値(グループ、ユーザー、エラー)は、検証プロセス中にインクリメントされる.jsp変数です。つまり、値を取得するにはデータが必要です。ページが実行されるたびに、変数はデフォルトの0、空白などに設定されます。
私が見る限り、2つの可能性しかありません。
- AJAXはキャッシュされたページを返します
- .JSPは前のリクエストを記憶しています
しかし、私はキャッシュヘッダーなし、ファイル名の変更などを無駄に調べました。
その他の注意事項: iFrame / AJAXは、毎回ファイルをサーバーに正常にアップロードします。正しいファイル名が検証.jspページに渡されます。最初の実行は常に完全に機能します。
検証コードはかなり長いですが、本当に必要な場合はどこかに投稿することができます(ただし、コードは最初は完全に実行されるため、通信/キャッシュ関連の問題であると思います)。誰かが何か考えを持っているなら、私は聞いています。