В MVC, как вызвать файл обработчика .ashx через jquery

В mvc мне нужно вызвать файл обработчика .ashx через jquery.

я попробовал код взрыва

 $("#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"
Пожалуйста, помогите мне вызвать файл ".ashx" в MVC..


person Chintu    schedule 06.06.2014    source источник


Ответы (1)


Взгляните на этот пост ниже:

Как вызвать HttpHandler через JQuery в MVC

Я также рекомендую поместить весь путь в часть URL-адреса вызова AJAX, где это возможно (например, «~/shared/fileuploadhander.ashx»).

Как Ant P задал вопрос выше, MVC пытается направить вызов как действие, но серверная часть тупая и не знает, как обрабатывать типы файлов .ASHX (если я правильно понимаю).

Кроме того, попробуйте поставить event.PreventDefault(); в верхней части кода. По сути, вы говорите не останавливать исходную функциональность события click, затем вы вызываете его снова, а затем, наконец, предотвращаете функциональность по умолчанию (поправьте меня, если я ошибаюсь). Попробуйте структурировать его так, чтобы событие не запускалось дважды:

$("#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);
    }
  });
});
person Damian    schedule 06.06.2014