Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery在ASP.NET MVC中上载文件?_Javascript_Jquery_Asp.net Mvc_Knockout.js_Form Data - Fatal编程技术网

Javascript 如何使用jQuery在ASP.NET MVC中上载文件?

Javascript 如何使用jQuery在ASP.NET MVC中上载文件?,javascript,jquery,asp.net-mvc,knockout.js,form-data,Javascript,Jquery,Asp.net Mvc,Knockout.js,Form Data,我需要上传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 = [], 845

我需要上传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:

控制器:

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

您需要添加两个额外的ajax选项,
processData:false
contentType: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);

您需要设置
processData:false、
contentType:false、
ajax选项(请参阅)谢谢!这些是我错过的选择。
var url = '@Url.Action("Upload", "blah")',
data.append(id, that.id);