我们的应用程序中有很多ajax调用。
我们可以在布局文件中设置标头,异步,数据类型等基本参数,并且仅使用/覆盖在调用时更改的参数。
例如在布局文件中
Case 1: Users strength is less then 20 users
Request made in App: 10:15:00 AM
Request reached in Adapter: 10:15:00 AM
Request reached in ESB: 10:15:00 AM
Case 2: Users strength is increased towards 1000
Request made in App: 10:15:00 AM
Request reached in Adapter: 10:15:00 AM
Request reached in ESB: 10:15:55 AM
例如:在调用文件中
$.ajax({
dataType: "json",
async: false,
headers: { "Accept-Encoding": "compress, gzip" }
});
答案 0 :(得分:0)
jQuery
本身已经具有ajaxSetup()
方法来设置默认设置,该方法将为将来的AJAX回调启用。下面是一个示例,该示例对具有相同布局页面的所有视图页面使用默认设置:
$.ajaxSetup({
dataType: "json",
async: false,
headers: { "Accept-Encoding": "compress, gzip" }
});
然后,您也可以在视图页面中添加其他设置:
$.ajax({
url: "@Url.Action("GetState", "Country")",
data: { search: search, StateId: state },
success: function (data) {
// do something
}
});
如果要覆盖默认设置,则可以定义AJAX选项并通过$.ajax()
传递它:
var config = {
type: 'POST',
url: "@Url.Action("GetState", "Country")",
data: { search: search, StateId: state },
async: true,
dataType: "text"
};
$.ajax(config);
但是,由于以下原因,不建议使用ajaxSetup()
:
此处指定的设置将影响所有对
$.ajax
的呼叫或 基于Ajax的派生词,例如$.get()
。这可能导致不良 行为,因为可能会有其他调用者(例如插件) 正常的默认设置。因此,我们强烈建议 反对使用此API 。相反,在 调用或定义一个简单的插件即可。
因此,最好在单个变量或函数中创建默认设置,并在必要时进行扩展,因为基本上AJAX设置包含键值对(KVP)对象。使用jQuery.extend()
函数将默认设置合并到其他设置中,然后将其作为AJAX回调参数传递:
// Layout page
var defaultSettings = {
dataType: "json",
async: false,
headers: { "Accept-Encoding": "compress, gzip" }
};
// View page
var viewSettings = {
url: "@Url.Action("GetState", "Country")",
data: { search: search, StateId: state },
success: function (data) {
// do something
}
};
var settings = $.extend({}, defaultSettings, viewSettings);
$.ajax(settings);
在发送AJAX请求之前,还可以使用jQuery.isPlainObject()
,以确保所有参数都是有效的KVP(对于true
类型,它应返回PlainObject
)。