Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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 从ajax检索控制器中的列表_Javascript_Jquery_Json_Ajax - Fatal编程技术网

Javascript 从ajax检索控制器中的列表

Javascript 从ajax检索控制器中的列表,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我有以下javascript代码: var formData = new FormData($('#formSlip').get(0)); formData.append('myList', JSON.stringify(tests)); 其中,测试是对象列表。我将向我的控制器发送一个ajax post请求,并在该请求中发送一个文件和一个对象列表 $.ajax({ url: url, type: 'post',

我有以下javascript代码:

  var formData = new FormData($('#formSlip').get(0));
  formData.append('myList', JSON.stringify(tests)); 
其中,
测试
是对象列表。我将向我的控制器发送一个ajax post请求,并在该请求中发送一个文件和一个对象列表

 $.ajax({
            url: url,
            type: 'post',
            data: formData,
            processData: false,
            contentType: false,
            cache: false,
            success://some code
        })
我使用Chrome中的
DevTools
查看了我的
请求有效负载,它看起来如下:

   Content-Disposition: form-data; name="firstPdf"; filename="blank.pdf"
    Content-Type: application/pdf

    Content-Disposition: form-data; name="myList"

    [{"key":"Section1","listTitles":["aaaa","aa","aa","a"]},
    {"key":"Section2","listTitles":["bb","b","bb","b"]}]
我正在控制器操作中检索文件,但由于某些原因,列表始终为空,这是我的控制器操作:

 [HttpPost]
    public ActionResult LS10(HttpPostedFileBase firstPdf, List<PdfPieceVM> myList)
    {            
        var t = firstPdf.InputStream;         
        byte[] pdfByte = new byte[firstPdf.ContentLength];
        return File(pdfByte, "application/pdf", firstPdf.FileName);
    }
[HttpPost]
公共操作结果LS10(HttpPostedFileBase firstPdf,列表myList)
{            
var t=firstPdf.InputStream;
byte[]pdfByte=新字节[firstPdf.ContentLength];
返回文件(pdfByte,“application/pdf”,firstPdf.FileName);
}
我创建了一个ViewModel以获取该列表:

  public class PdfPieceVM
    {
        public string key { get; set; }
        public List<string> listTitles { get; set; }
    }
公共类PdfPieceVM
{
公共字符串密钥{get;set;}
公共列表列表标题{get;set;}
}

当我调试代码时,
myList
参数总是空的,但是我正在接收文件,我需要做什么来纠正这个问题

在阅读@Alex Menconi引用的帖子时,我将控制器操作更改为检索字符串,然后将其反序列化为我想要的类型:

    [HttpPost]
        public ActionResult LS10(HttpPostedFileBase firstPdf, string myList)
        {
            List<PdfPieceVM> pdfPieces = new 
         JavaScriptSerializer().Deserialize<List<PdfPieceVM>>(myList);            
        }
[HttpPost]
公共操作结果LS10(HttpPostedFileBase firstPdf,字符串myList)
{
列出pdfPieces=新
JavaScriptSerializer()。反序列化(myList);
}

你看过这篇文章了吗:-看起来需要contentType。