diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/JQueryForm/JQueryFormScriptContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/JQueryForm/JQueryFormScriptContributor.cs deleted file mode 100644 index cde8e83a59..0000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/JQueryForm/JQueryFormScriptContributor.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Collections.Generic; -using Volo.Abp.AspNetCore.Mvc.UI.Bundling; -using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQuery; -using Volo.Abp.Modularity; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.JQueryForm; - -[DependsOn(typeof(JQueryScriptContributor))] -public class JQueryFormScriptContributor : BundleContributor -{ - public override void ConfigureBundle(BundleConfigurationContext context) - { - context.Files.AddIfNotContains("/libs/jquery-form/jquery.form.min.js"); - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs index 4bb1d80fef..728becdf6d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs @@ -4,7 +4,6 @@ using Volo.Abp.AspNetCore.Mvc.UI.Packages.BootstrapDatepicker; using Volo.Abp.AspNetCore.Mvc.UI.Packages.BootstrapDaterangepicker; using Volo.Abp.AspNetCore.Mvc.UI.Packages.DatatablesNetBs5; using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQuery; -using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQueryForm; using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQueryValidationUnobtrusive; using Volo.Abp.AspNetCore.Mvc.UI.Packages.Lodash; using Volo.Abp.AspNetCore.Mvc.UI.Packages.Luxon; @@ -21,7 +20,6 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Bundling; typeof(BootstrapScriptContributor), typeof(LodashScriptContributor), typeof(JQueryValidationUnobtrusiveScriptContributor), - typeof(JQueryFormScriptContributor), typeof(Select2ScriptContributor), typeof(DatatablesNetBs5ScriptContributor), typeof(Sweetalert2ScriptContributor), diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js index 7a2c08ca7e..3280408261 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js @@ -1,5 +1,5 @@ (function ($) { - if (!$ || !$.fn.ajaxForm) { + if (!$) { return; } @@ -87,11 +87,64 @@ userOptions.complete && userOptions.complete.apply(this, arguments); }; - return $form.ajaxForm(options); + $form.off("submit.abpAjaxForm").on("submit.abpAjaxForm", function (e) { + e.preventDefault(); + + var formEl = $form[0]; + + var formData = new FormData(formEl); + var arr = $form.serializeArray(); + + if (options.beforeSubmit && options.beforeSubmit.call(formEl, arr, $form) === false) { + return; + } + + var method = (options.method || $form.attr("method") || "POST").toUpperCase(); + var url = $form.attr("action") || window.location.href; + + var ajaxOptions = { + url: url, + type: method, + dataType: options.dataType, + timeout: options.timeout, + headers: { + "X-Requested-With": "XMLHttpRequest" + } + }; + + if (method === "GET") { + var query = $.param(arr); + if (query) { + url += (url.indexOf("?") >= 0 ? "&" : "?") + query; + } + ajaxOptions.url = url; + } else { + ajaxOptions.data = formData; + ajaxOptions.processData = false; + ajaxOptions.contentType = false; + } + + var jqXhrForComplete = null; + $.ajax(ajaxOptions) + .done(function (data, statusText, jqXhr) { + jqXhrForComplete = jqXhr; + options.success && options.success.call(formEl, data, statusText, jqXhr, $form); + }) + .fail(function (jqXhr, statusText, errorThrown) { + jqXhrForComplete = jqXhr; + options.error && options.error.call(formEl, jqXhr, statusText, errorThrown); + }) + .always(function (dataOrJqXhr, statusText, jqXhrOrError) { + var jqXhr = jqXhrForComplete || (dataOrJqXhr && dataOrJqXhr.status !== undefined ? dataOrJqXhr : jqXhrOrError); + options.complete && options.complete.call(formEl, jqXhr, statusText, $form); + }); + }); + + return $form; }; $.fn.abpAjaxForm.defaults = { method: 'POST' }; -})(jQuery); \ No newline at end of file +})(jQuery); diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json index 3143c0fc0a..6ae988d842 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json @@ -16,7 +16,6 @@ "@abp/bootstrap-daterangepicker": "~10.1.0-rc.2", "@abp/datatables.net-bs5": "~10.1.0-rc.2", "@abp/font-awesome": "~10.1.0-rc.2", - "@abp/jquery-form": "~10.1.0-rc.2", "@abp/jquery-validation-unobtrusive": "~10.1.0-rc.2", "@abp/lodash": "~10.1.0-rc.2", "@abp/luxon": "~10.1.0-rc.2", diff --git a/npm/packs/bootstrap-daterangepicker/package.json b/npm/packs/bootstrap-daterangepicker/package.json index d027c0f0bd..56aa075667 100644 --- a/npm/packs/bootstrap-daterangepicker/package.json +++ b/npm/packs/bootstrap-daterangepicker/package.json @@ -10,6 +10,7 @@ "access": "public" }, "dependencies": { + "@abp/moment": "~10.1.0-rc.2", "bootstrap-daterangepicker": "^3.1.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",