【问题标题】:In MVC how to call .ashx handler file through jquery在 MVC 中如何通过 jquery 调用 .ashx 处理程序文件
【发布时间】: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”文件..

【问题讨论】:

标签: jquery asp.net-mvc asp.net-mvc-4 asp.net-mvc-5


【解决方案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);
    }
  });
});

【讨论】:

    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 2012-10-09
    • 2016-02-02
    相关资源
    最近更新 更多