在 MVC 中如何通过 jquery 调用 .ashx 处理程序文件
Posted
技术标签:
【中文标题】在 MVC 中如何通过 jquery 调用 .ashx 处理程序文件【英文标题】:In MVC how to call .ashx handler file through jquery 【发布时间】:2014-07-27 09:33:04 【问题描述】:在 mvc 中我需要通过 jquery 调用 .ashx 处理程序文件。
我尝试了自爆代码
$("#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”文件..
【问题讨论】:
How to call a HttpHandler via JQuery in MVC的可能重复 【参考方案1】:看看下面这篇文章:
How to call a HttpHandler via JQuery in MVC
我的建议也是尽可能将整个路径放入 AJAX 调用的 URL 部分(例如“~/shared/fileuploadhander.ashx”)。
正如 Ant P 在上述问题中所说,MVC 试图将调用路由为一个操作,但后端很笨,不知道如何处理 .ASHX 文件类型(如果我的理解是正确的)。
另外,试着把 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);
);
);
【讨论】:
以上是关于在 MVC 中如何通过 jquery 调用 .ashx 处理程序文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Jquery AJAX 调用 MVC Action 然后在 MVC 中提交表单?
jQuery 通过 Ajax 在 ASP.NET MVC C# 中调用 Action 方法
如何在asp.net mvc中使用jquery ajax在方法中调用字符串
如何以 10 秒的间隔在 mvc razor 页面中使用 jQuery 调用方法并将输出附加到 html