我想使用Ajax.BeginForm将HttpPostedFileBase发送到我的控制器。
因为我正在使用Ajax,我需要调整我的请求以使其工作,(文件否则为null)。
我面临的问题是,在我的表单中, kendo 函数(多选,文件输入)在使用ajax重新加载内容后不会重新加载/停止工作。导致此问题的脚本正在使用
e.stopImmediatePropagation();
由于某种原因停止所有剑道功能,(这里没有javascript专家)。
MultiSelect查看:
@(Html.Kendo().MultiSelectFor(x => x.ProductModel.AddProductSubCategories)
.Name("ProductModel.AddProductSubCategories")
.HtmlAttributes(new { @class = "multi-select" })
.DataTextField("SubCategoryName")
.DataValueField("SubCategoryID")
)
脚本:
window.addEventListener("submit", function (e) {
var form = e.target;
alert($(form).attr('id'));
if (form.getAttribute("enctype") === "multipart/form-data") {
if (form.dataset.ajax && $(form).valid()) {
e.preventDefault();
e.stopImmediatePropagation();
$('.admin-add-product-message-container').remove();
AjaxLoadUp();
var xhr = new XMLHttpRequest();
xhr.open(form.method, form.action);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
if (form.dataset.ajaxUpdate) {
var updateTarget = document.querySelector(form.dataset.ajaxUpdate);
if (updateTarget) {
updateTarget.innerHTML = xhr.responseText;
}
}
}
};
xhr.send(new FormData(form));
}
}
}, true);
我尝试使用
重新加载Kendo脚本 $.getScript("myscript");
有什么建议吗? 感谢
答案 0 :(得分:0)
来自官方剑道论坛的答案:
窗口小部件将停止工作,因为当响应设置为innerHTML属性时,不会评估脚本。您可以使用jQuery html方法来设置响应,以避免出现问题,例如。
if (updateTarget) {
$(updateTarget).html(xhr.responseText);
}