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);
Дополнительно jQuery.isPlainObject()
можно использовать перед отправкой запроса AJAX, чтобы убедиться, что все параметры являются действительными KVP (он должен возвращать true
для PlainObject
типа).