在mvc中,我需要通过jquery调用.ashx处理程序文件。
我尝试了bleow代码
$("#btnUpload").click(function (evt) {
var fileUpload = $("#file1").get(0);
var files = fileUpload.files;
var data = new FormData();
for (var i = 0; i < files.length; i++) {
data.append(files[i].name, files[i]);
}
var options = {};
options.url = "FileUploadHandler.ashx";
options.type = "POST";
options.data = data;
options.contentType = false;
options.processData = false;
options.success = function (result) { alert(result); };
options.error = function (err) { alert(err.statusText); };
$.ajax(options);
evt.preventDefault();
});
得到&#34; Undifine&#34;错误
请帮我打电话&#34; .ashx&#34;文件在MVC ..
答案 0 :(得分:0)
看看下面这篇文章:
How to call a HttpHandler via JQuery in MVC
我的建议也是尽可能将整个路径放入AJAX调用的URL部分(例如&#34;〜/ shared / fileuploadhander.ashx&#34;)。
当Ant P提出上述问题时,MVC正试图将调用路由为一个动作,但后端是愚蠢的,并且不知道如何处理.ASHX文件类型(如果我的理解是正确的)。 / p>
另外,尝试将event.PreventDefault();在代码的顶部。您实质上是说不要停止点击事件的原始功能,然后再次调用它,然后您最终会阻止默认功能(如果我错了,请更正我)。尝试更像这样构建它,它会阻止事件被触发两次:
$("#btnUpload").click(function (evt) {
evt.preventDefault();
var fileUpload = $("#file1").get(0);
var files = fileUpload.files;
var data = new FormData();
for (var i = 0; i < files.length; i++) {
data.append(files[i].name, files[i]);
}
$.ajax({
url: "FileUploadHandler.ashx",
type: "POST",
data: data,
success: function(data){
alert(data);
},
error: function(err){
alert(err.statusText);
}
});
});