我在VS2012中使用ASP.NET MVC。
我正在使用捆绑包来缩小我的JavaScript代码。
我的捆绑代码是:
bundles.Add(new ScriptBundle("~/bundles/inline").Include("~/Scripts/inline/_layout_inline.js"));
JavaScript源代码如下:
function requestPurchaseCompanies()
{
var urlStr = '/Search/PurchaseSelectedCompanys';
$.ajax({
url: urlStr,
dataType: 'json',
type: 'POST',
error: function (result, status, error) {
var message = JSON.parse(result.responseText);
parsePurchaseError(message);
},
success: function (data) {
// get the result and do some magic with it
var message = data.Message;
if (window.location.href.indexOf('page=') < 0) {
var url = '/Search/PagingDisplay';
var params = '?page=1';
window.location = 'http://' + window.location.host + url + params;
} else {
window.location = window.location;
}
}
});
}
请注意以下行:error: function (result, status, error) {
这是渲染的缩小JavaScript:
function requestPurchaseCompany(n, t, i, r) {
var u = undefined,
f, e, o, s, h;
n != null && i == "SearchResults" ? (f = $(n).closest("div.result")[0], f && f != "undefined" && (e = $(f).children("span[id=SelectDuns]")[0], e && e != "undefined" && (o = $(e).children("input:hidden")[0], o && o != "undefined" && (u = new CompanySelectState, u.CompanyID = o.value)))) : t != undefined && (u = new CompanySelectState, u.CompanyID = t), u && u != undefined && (s = "/Search/PurchaseCompany", h = JSON.stringify(u), $.ajax({
url: s,
type: "POST",
dataType: "json",
data: h,
contentType: "application/json; charset=utf-8",
error: function (n) {
var r = JSON.parse(n.responseText);
parsePurchaseError(r)
},
success: function (t) {
var e = t.Message,
u, f;
t.State == !0 && $(n).attr("disabled", ""), n != null && i == "SearchResults" ? window.location.href.indexOf("page=") < 0 ? (u = "/Search/PagingDisplay", f = "?page=1", window.location = "http://" + window.location.host + u + f) : window.location = window.location : window.location = window.location, r != undefined && r == !0 && window.opener != undefined && window.opener.location != undefined && window.opener.location.reload()
}
}))
}
注意第10行:error:function(n){
所以它开始于:
error: function (result, status, error) {
并呈现为:
error:function(n){
这个问题是有一个参数的缩小代码将该参数视为错误参数而不是我需要的XMLHttpRequest。
我该如何解决这个问题?
答案 0 :(得分:0)
缩小是从源代码中删除所有不必要的字符而不更改其功能的过程。
您的错误功能定义如下:
error: function (result, status, error) {
var message = JSON.parse(result.responseText);
parsePurchaseError(message);
}
正如您所看到的,您实际上并未使用status
和error
,但您只使用result
。
我认为当缩小过程中删除不必要的字符时,它将包含未使用的变量,因此你得到:
error:function(n){
var r=JSON.parse(n.responseText);
parsePurchaseError(r)
}
由于未使用status
和error
,因此在缩小过程中删除它们是有意义的。
这个问题是具有一个参数的缩小代码 将该参数视为错误参数而不是XMLHttpRequest 我需要的。
因为参数的顺序是:
,所以不是这样Function(jqXHR jqXHR, String textStatus, String errorThrown)
因此,当仅指定单个参数时,它将是jqXHR
参数。
鉴于JavaScript的性质,它会将预期顺序中的所有3个参数传递给error
回调,但如果您只指定了一个参数,则不会抛出错误。如果您不在错误回调中使用它们并且代码仍然有效,则无需指定任何参数。
以下代码也可以正常使用:
error: function () {
console.log("We have an error");
}