2
Мне нужно загрузить файлы в ASP.NET MVC. чистый код javascript работает (см. ниже), но если я конвертирую часть отправки в jQuery, она дает мне ошибку jquery (строка 8458).Как загрузить файл в ASP.NET MVC с помощью jQuery?
ошибка:
0x8000fff - JavaScript runtime error: Argument not optional
code:
8453 jQuery.param = function(a, traditional) {
8454 var prefix,
8455 s = [],
8456 add = function(key, value) {
8457 // If value is a function, invoke it and return its value
8458 value = jQuery.isFunction(value) ? value() : (value == null ? "" : value);
8459 s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
8460 };
HTML:
<form data-bind='submit: upload'>
<input type='file' id='fileInput' />
<input type='submit' value='upload' />
</form>
JS:
that.upload = function(){
var data = new FormData();
var fileInput = $('#fileInput')[0];
var file = fileInput.files[0];
data.append(file.name, file);
var url = 'blah/Upload?id=' + that.id();
// this pure js works
var xhr = new XMLHttpRequest();
xhr.open('post', url);
xhr.send(data);
// this jquery code does NOT work
$.ajax({
type: 'post',
dataType: json',
url: url,
data: data,
});
};
Контроллер:
public JsonResult Upload(string id){
return Json(JsonConvert.SerializeObject(true), JsonRequestBehavior.DenyGet);
}
Вам необходимо установить опции 'processData: false 'и' contentType: false, 'ajax (см. [This ответ] (http://stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model-to-formdata-and-obtain-it-in-mvc/29293681#29293681)) –
спасибо вы! это те варианты, которые мне не хватает. –