4

Stack Exchange MiniProfilerをインストールしましたが、View Sourceは、期待されるHTMLをレンダリングしていることを示しています。ただし、隅に小さなプロファイル詳細ボックスは表示されません-何が問題なのですか?

<script src="/v2/Scripts/jquery-1.6.1.min.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="/v2/mini-profiler-includes.css?v=1.7.0.0">
<script type="text/javascript" src="/v2/mini-profiler-yepnope.1.0.1.js"></script>
<script type="text/javascript">
    yepnope([
        { test: window.jQuery, nope: '/v2/mini-profiler-jquery.1.6.1.js' },
        { test: window.jQuery && window.jQuery.tmpl, nope: '/v2/mini-profiler-jquery.tmpl.beta1.js' },
        { load: '/v2/mini-profiler-includes.js?v=1.7.0.0',
           complete: function() {
               jQuery(function() {
                   MiniProfiler.init({
                       ids: ["025bbb91-9605-44b7-b33d-d8b196326dbc","2c74ce3e-8de6-4f8d-920a-e8708b22231b"],
                       path: '/v2/',
                       version: '1.7.0.0',
                       renderPosition: 'left',
                       showTrivial: false,
                       showChildrenTime: false,
                       maxTracesToShow: 15
                   });
               });
         }
    }]);
</script>

そして私のGlobal.asax.csで:

    protected void Application_BeginRequest()
    {
        if (Request.IsLocal)
        {
            MiniProfiler.Start();
        }
    }

    protected void Application_EndRequest()
    {
        MiniProfiler.Stop();
    }

ここに画像の説明を入力してください

編集:Samの入力のおかげで、.ajaxSetup()メソッドの問題を追跡しました。コメントアウトすると、プロファイルボックスが再び表示されます。しかし、なぜこれが問題なのかわかりません。

$.ajaxSetup({
    data: "{}",
    dataFilter: function (data) {
        var msg;

        if (data == "") {
            msg = data;
        }
        else if (typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function') {
            msg = JSON.parse(data);
        }
        else {
            msg = eval('(' + data + ')');
        }

        if (msg.hasOwnProperty('d')) {
            return msg.d;
        }
        else {
            return msg;
        }
    }
});
4

2 に答える 2

2

この種の意味はあります。おそらく、フィルターが結果をマングリングしているのでしょう。

MiniProfiler JSONの結果であることがわかった場合にフィルタリングをバイパスする条件を追加すると、修正されるはずです。

于 2011-08-28T00:54:36.730 に答える
2

私の推測では、グローバルdataFilterがMiniProfilerの$.get()jQueryテンプレートテンプレートファイルに干渉していると思います。HTMLフラグメントを呼び出すJSON.parse()と、間違いなくエラーがスローされます。

最近のバージョンのjQueryを使用しているため、最適化されたJSON解析は手動で追加する必要はありません。その機能は1.4のjQueryコアに含まれていました。

したがって、最も簡単に、グローバルdataFilterを次のように変更してみてください。

$.ajaxSetup({
  data: "{}",
  dataFilter: function (msg) {
    if (msg.hasOwnProperty('d')) {
        return msg.d;
    }
    else {
        return msg;
    }
  }
});

それでも問題が解決しない場合は、グローバルdataFilterの代わりにjQuery 1.5のコンバーターを調べて、特定のContent-Typeの応答にdataFilterのような操作を適用できるようにすることをお勧めします。ここでjQuery1.5AJAXの書き換えを実際に行った人からのいくつかの良い例:http://encosia.com/jquery-1-5s-ajax-rewrite-and-asp-net-services-all-is-well/#comments

于 2011-09-15T12:29:12.910 に答える