【问题标题】:MS CRM 2013 adds version number to WebResources of script typeMS CRM 2013 将版本号添加到脚本类型的 WebResources
【发布时间】:2014-06-16 12:02:29
【问题描述】:

我在 MS CRM 2013 中发现了一个奇怪的问题,由于它似乎是设计使然,我需要帮助来找到解决方法。

问题是无法从 WebResource 调用 getScript jQuery 方法。

CRM 将版本字符串添加到 url,这会导致请求失败,错误为 500

例如,当我尝试拨打:/Organization/WebResources/Synchronization.js

CRM 将此请求转换为以下请求:/Organization/WebResources/Synchronization.js?_=1402918931398,但失败并出现服务器错误 500

这是我正在使用的示例代码:

var settings = {
    url: "/Organization/WebResources/Synchronization.js",
    dataType: "script",
    success: function (data) {
       console.log("success");
    },
    error: function(jqXHR, textStatus, errorThrown) {
       console.log("error");
    }
};

$.ajax(settings);

你能指点我吗,我怎么知道URL什么时候改变了?

【问题讨论】:

  • 只是一个说明,添加数字是为了强制浏览器使用最新版本的webresource,否则浏览器缓存会加载旧版本
  • 在 CRM 2013 中添加此数字会导致服务器错误 500。

标签: javascript jquery ajax dynamics-crm


【解决方案1】:

原来,这是jQuery 缓存功能。

如果在设置对象中开启缓存,问题就会消失。像这样:

var settings = {
    url: "/Organization/WebResources/Synchronization.js",
    cache: true,
    dataType: "script",
    success: function (data) {
       console.log("success");
    },
    error: function(jqXHR, textStatus, errorThrown) {
       console.log("error");
    }
};

【讨论】:

  • 你用cache: true检查你是否得到了最新版本?
  • @GuidoPreite 不,我依赖缓存。这在一般情况下不好,但在这种特殊情况下,可能会很好,我不希望 js 文件改变。再一次,即使我想获得非缓存版本,CRM 2013 也不允许。
猜你喜欢
  • 2016-02-12
  • 1970-01-01
  • 2015-01-04
  • 1970-01-01
  • 2013-05-22
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多