2011-08-26 5 views
4

Stack Exchange MiniProfiler를 설치했으며 View Source가 예상 HTML을 렌더링하고 있음을 보여줍니다. 그러나 모서리에 작은 세부 정보 상자가 표시되지 않습니다 - 무엇이 잘못 될 수 있습니까? Stack Exchange MiniProfiler에 프로필 상자가 표시되지 않습니까?

<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(); 
    } 

enter image description here

편집 : 나는 내 .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; 
     } 
    } 
}); 
+0

@Sam 위의 .ajaxSetup으로 작은 프로필 상자가 실패하게되는 이유를 알고 계십니까? –

답변

2

내 생각에 전역 dataFilter가 jQuery 템플릿 템플릿 파일 용 MiniProfiler의 $.get()을 방해합니다. HTML 조각에 JSON.parse()을 호출하면 오류가 발생합니다.

최근 버전의 jQuery를 사용하고 있으므로 최적화 된 JSON 구문 분석은 수동으로 추가해야하는 것이 아닙니다. 이 기능은 1.4의 jQuery 코어에 포함되었습니다.

그래서, 가장 간단하게, 여기에 글로벌 DataFilter를 변경 시도 : 그게 해결되지 않으면

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

, 당신은 jQuery를 1.5의 컨버터 대신의 글로벌 DataFilter를, 보길 원하는 것일 수도있는 특정 Content-Type의 응답에 dataFilter와 같은 작업을 적용 할 수 있습니다. 실제로 jQuery 1.5 AJAX를 수행 한 사람의 좋은 예가 여기에 다시 작성되었습니다. http://encosia.com/jquery-1-5s-ajax-rewrite-and-asp-net-services-all-is-well/#comments

+0

+1 문제를 잘 해결해 주셔서 감사합니다. –

2

이런 종류의 의미가 있습니다. 아마도 필터가 결과를 망칠 수 있습니다.

필터링을 우회하는 조건을 추가하면 MiniProfiler JSON 결과로 간주되어이를 수정해야합니다.

+0

감사합니다. 결과가 미니 프로파일 러에서 나온 것인지 어떻게 테스트 할 수 있습니까? –

+0

console.log in datafilter 아마도 substring을 보았을 때 무시할 수 있습니다. 기본 데이터가이 문제를 일으키지 않았 음을 테스트합니다. –

관련 문제