gpt4 book ai didi

javascript - 如何使用 jQuery 在 ASP.NET MVC 中上传文件?

转载 作者:行者123 更新时间:2023-11-29 19:21:21 25 4
gpt4 key购买 nike

我需要在 ASP.NET MVC 中上传文件。纯 javascript 代码有效(见下文),但如果我将发送部分转换为 jQuery,它会给我一个 jquery 错误(第 8458 行)。

错误:

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,
});
};

Controller :

public JsonResult Upload(string id){
return Json(JsonConvert.SerializeObject(true), JsonRequestBehavior.DenyGet);
}

最佳答案

您需要添加 2 个额外的 ajax 选项,processData: falsecontentType: false

$.ajax({
type: 'post',
dataType: json',
url: url,
data: data,
processData: false, // add
contentType: false, // add
....
});

旁注:您应该使用 Url.Action() 来确保正确生成您的 url

var url = '@Url.Action("Upload", "blah")',

并将id值添加到FormData

data.append(id, that.id);

关于javascript - 如何使用 jQuery 在 ASP.NET MVC 中上传文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32897882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com