【发布时间】:2017-12-22 15:03:30
【问题描述】:
我正在尝试通过 AJAX 和 ASP.NET MVC 将图像从 Summernote 插件上传到服务器。 在检查了几个示例后,我能够创建以下 JS 代码: 初始化:
$('#contentEditor').summernote({
height: 520, // set editor height
minHeight: 520, // set minimum height of editor
maxHeight: 520, // set maximum height of editor
callbacks: {
onImageUpload: onImageUpload
}
});
图片上传:
function onImageUpload(files) {
var data = new FormData();
data.append("articleId", @(Model.Id));
data.append("langId", @(Model.LanguageCode));
for (var i = 0; i < files.length; i++) {
data.append("files[" + i + "]", files[i]);
}
$.ajax({
data: data,
type: "POST",
url: "@(Url.Action("UploadArticleImage"))",
cache: false,
contentType: false,
processData: false,
success: function (d) {
if (!d.result) {
// TODO: Show error
} else {
for (var i = 0; i < d.data.length; i++) {
$('#contentEditor').summernote('insertImage', d.data[i]);
}
}
}
});
return false;
}
现在,图片上传工作正常,我得到了正确的路径,但由于某种原因,AJAX 调用在执行后会导致页面刷新。 我尝试添加“return false”,但它不起作用,我无法使用 preventDefault,因为我没有从 Summernote 获得事件。
有人知道为什么 AJAX 会导致刷新吗? 我怀疑罪魁祸首是“FormData”对象,但即使经过广泛的 Google 研究,我也找不到任何证据或阻止刷新的方法。
【问题讨论】:
-
您的代码应该可以工作。你测试的是哪个浏览器?
-
Chrome 版本 59.0.3071.115(官方版本)(64 位)
-
和我的浏览器一样。我还用 Edge 进行了测试,它也有效。嗯,这个好像没什么线索。
标签: javascript jquery ajax visual-studio summernote