在MVC中如何通过jquery调用.ashx处理程序文件

在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(); }); 

得到“Undifine”错误
请帮我在MVC中调用“.ashx”文件..

看看下面这篇文章:

如何在MVC中通过JQuery调用HttpHandler

我的建议也是尽可能将整个路径放入AJAX调用的URL部分(例如“〜/ shared / fileuploadhander.ashx”)。

正如Ant P提出上述问题,MVC试图将调用作为一个动作进行路由,但后端是愚蠢的,不知道如何处理.ASHX文件类型(如果我的理解是正确的)。

另外,尝试将event.PreventDefault(); 在代码的顶部。 你本质上是说不要停止点击事件的原始function然后你再次调用它然后你最终阻止默认function(如果我错了,请纠正我)。 尝试更像这样构建它,它会阻止事件被触发两次:

 $("#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); } }); });