C# 堆栈交换迷你探查器不';不显示配置文件框?
我已经安装了Stack Exchange MiniProfiler,并且View Source显示它正在呈现预期的HTML。但是,它没有显示角落中的小轮廓细节框-可能有什么问题C# 堆栈交换迷你探查器不';不显示配置文件框?,c#,asp.net-mvc-2,mvc-mini-profiler,C#,Asp.net Mvc 2,Mvc Mini Profiler,我已经安装了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-incl
<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>
编辑:多亏了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;
}
}
});
这样做是有道理的,也许你的过滤器正在破坏结果
添加一个绕过筛选的条件(如果您看到它是MiniProfiler JSON结果),应该可以修复它 我猜全局数据过滤器正在干扰MiniProfiler的
$.get()
用于jQuery模板文件。对HTML片段调用JSON.parse()
,肯定会引发错误
由于您使用的是最新版本的jQuery,因此优化的JSON解析不需要手动添加。该功能包含在1.4版本的jQuery核心中
因此,最简单的做法是,尝试将全局数据过滤器更改为:
$.ajaxSetup({
data: "{}",
dataFilter: function (msg) {
if (msg.hasOwnProperty('d')) {
return msg.d;
}
else {
return msg;
}
}
});
如果这还不能解决问题,您可能希望研究jQuery1.5的转换器,而不是全局数据过滤器,全局数据过滤器允许您对特定内容类型的响应应用类似于数据过滤器的操作。这里有一些很好的例子,来自于实际重写jQuery 1.5 AJAX的人:@Sam你知道上面显示的.AJAX设置为什么会导致小配置文件框失败吗?谢谢,我如何测试结果是否来自Mini Profiler?console.log in datafilter如果你看到子字符串,也许你可以绕过它,另外,测试默认数据是否不会导致此问题
$.ajaxSetup({
data: "{}",
dataFilter: function (msg) {
if (msg.hasOwnProperty('d')) {
return msg.d;
}
else {
return msg;
}
}
});