わかりました、これは奇妙なものです。
簡単な要約: 私は SilverStripe CMS を使用しており、一連の ajax 遅延読み込みパネルを介して管理画面に UI を読み込みます。それはすべて開発でうまく機能します。また、メイン パネルのデータを取得するための ajax 呼び出しは、両方で機能しています。つまり、開発サーバーと本番サーバーの両方でデータ (この場合は html) を 200 コードで返します (Firebug によると)。
ここで、ハンドラーには、成功、エラー、および完全な関数があります。成功はデータを取得し、メイン コンテンツ パネルを作成します。私のローカル開発サーバーでは、成功と完了の両方が正常に起動します。しかし、本番環境では、データが正常に返されていることを Firebug で確認できますが (私が言ったように 200 で)、完全な発火のみです。成功が実行されないのはなぜですか? 確かに、成功ロジックをcompleteに移動することはできますが、このサーバーは問題を引き起こし続ける可能性があります。
Dev ajax 呼び出しの応答ヘッダーは次のとおりです。
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection Keep-Alive
Content-Length 38407
Content-Type text/html; charset=utf-8
Date Thu, 02 Aug 2012 01:02:08 GMT
Expires Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive timeout=5, max=100
Pragma no-cache
Server Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/1.0.1c DAV/2 PHP/5.3.12
Set-Cookie PastMember=1; expires=Wed, 31-Oct-2012 01:02:09 GMT; path=/; httponly
X-Controller CMSPagesController
X-Include-CSS /framework/admin/thirdparty/jquery-notice/jquery.notice.css?m=1340880397...
X-Include-JS /framework/thirdparty/jquery/jquery.js?m=1340880400...
X-Powered-By PHP/5.3.12
X-Title SilverStripe - Pages
本番環境のヘッダーは次のとおりです (明らかな違いはエンコード/圧縮です)。
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0, max-age=0
Connection Keep-Alive
Content-Encoding gzip
Content-Length 2796
Content-Type text/html; charset=utf-8
Date Thu, 02 Aug 2012 01:44:20 GMT
Expires Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive timeout=2, max=98
Pragma no-cache
Server Apache
Set-Cookie PastMember=1; expires=Wed, 31-Oct-2012 01:44:22 GMT; path=/; httponly
Vary Accept-Encoding
X-Controller CMSPagesController
X-Include-CSS /framework/admin/thirdparty/jquery-notice/jquery.notice.css?m=1342411329...
X-Include-JS /framework/thirdparty/jquery/jquery.js?m=1342412461...
X-Mod-Pagespeed 0.10.21.2-1381
X-Title SilverStripe - Pages
奇妙なことに、ドキュメントを壊すことで状況を「修正」できます。DOCTYPE: の前に文字を追加する.<!DOCTYPE html>
と、成功ハンドラーが実行され、パネルが読み込まれます。1 文字を削除すると、パネルが読み込まれなくなります。私は困惑しています:-/
====編集====
これは ajax ハンドラーです。非常にバニラで、特別なことは何も行われていません。デバッグ用のコンソールを追加しました。エラーは実行されず、開発サーバーで成功して完了し、本番環境でのみ完了します。今、私の推測では、doctype (html5) に基づいて html を検証しようとしていて、エラーが発生していますか? jQueryがそこまで進んでいるとは思いませんでした。また、dev にはこれらの機能がないため、本番環境で圧縮とページ速度モジュールをオフにして、それが効果があるかどうかを確認します。
$.ajax({
url: url,
complete: function() {
self.removeClass('loading');
if(window.console) console.log('complete');
},
success: function(data, status, xhr) {
if(window.console) console.log('success');
self.html(data);
},
error: function(){
if(window.console) console.log('error');
}
});