【问题标题】:MiniProfiler and AngularJSMiniProfiler 和 AngularJS
【发布时间】:2015-04-28 14:19:34
【问题描述】:

最近我试图分析使用 AngularJS $http 服务调用的 ASP MVC 方法,我注意到 MiniProfiler 不会像从 JQuery 调用 AJAX 那样更新数据。

有没有办法将 MiniProfiler 与 Angular 一起使用?

【问题讨论】:

  • 处理 jQuery 的 MVC 端点与 AngularJS 发布的端点有何不同?更多关于两者的MVC实现细节可能会帮助你在这里得到答案
  • 既然您在分析来自 jQuery 的请求时没有遇到问题,那么来自 Angular 的 $http 也不应该有任何问题。很有可能您来自 Angular 的请求由于某种原因没有被触发或被阻止,并且无法执行操作。查看浏览器或提琴手上的网络选项卡以检查请求。
  • 感谢您的回答! JQuery 就是一个例子。我没有将它与 Angular 一起使用,但我使用 MiniProfiler 来分析使用来自 JQuery 的 ajax 调用的请求,并且一切都按预期工作,但是当涉及 Angular 时情况并非如此。 @Ibrahim,是的,检查“网络”选项卡是我做的第一件事,请求按预期触发,响应也很好。我还认为,如果使用 JQuery ajax 调用或 $http 服务,这应该没有任何区别。

标签: asp.net-mvc angularjs miniprofiler


【解决方案1】:

Angular (1.3.10) 需要调整

(如果您使用另一个库来满足您的 XHR 需求,则不需要)

MiniProfiler 对 XMLHttpRequest 执行此操作,以便能够拦截所有 XHR 对 angular 的调用

XMLHttpRequest.prototype.send = function sendReplacement(data) {
   if (this.onreadystatechange) {
    ...

嗯,Angular 从不设置 xhr.onreadystatechange,所以我们需要以一种无害的方式进行调整:

function createXhr() {
   var xhr = new window.XMLHttpRequest();
   xhr.onreadystatechange = function () { };
   return xhr;
}

详细解释here

【讨论】:

  • @Jeraya:你把 createXhr() 函数放在哪里了?
【解决方案2】:

此问题已通过 this pull request 解决,并已在当前 MiniProfiler nuger 中得到修复。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多