Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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 Spring ajax发送值,但为空_Javascript_Java_Ajax_Spring_Spring Mvc - Fatal编程技术网

Javascript Spring ajax发送值,但为空

Javascript Spring ajax发送值,但为空,javascript,java,ajax,spring,spring-mvc,Javascript,Java,Ajax,Spring,Spring Mvc,我的ajax帖子有问题。 阿贾克斯: 和java: @RequestMapping(value = "/servisDetail/uploadSoubor", method= RequestMethod.GET) public @ResponseBody ModelMap servisDetailUploadFile(@RequestParam(value = "file",required = false) MultipartFile soubor,

我的ajax帖子有问题。 阿贾克斯:

和java:

@RequestMapping(value = "/servisDetail/uploadSoubor", method= RequestMethod.GET)
public @ResponseBody
ModelMap servisDetailUploadFile(@RequestParam(value = "file",required = false) MultipartFile soubor,
                                @RequestParam(value = "url",required = false) String odkaz,
                                Locale locale){
    ModelAndView model = new ModelAndView();
    System.err.println("File: " + soubor + " and " + odkaz);
    return model.getModelMap();
}  
但打印到控制台的是:File:null和null

没有processData:false,我有ajax错误:非法调用 并且get或post类型仍然相同


有人知道如何修复它吗?

这是因为您没有将正确的文件附加到formData。请参阅。我尝试了下面的代码,它通过了测试,没有任何问题

<html>
<head>
<title>Test</title>
</head>
<body>
<input type="file" name="file">
<script src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$(function(){
    $('[name=file]').on('change', function(){
        var formData = new FormData();
        formData.append('file', $(this)[0].files[0]);
        formData.append("url", 'https://stackoverflow.com/questions/51235726/spring-ajax-send-value-but-null');
        $.ajax({
            url : "/servisDetail/uploadSoubor",
            type : 'POST',
            processData: false,
            contentType: false,
            data : formData,           
            success : function(response) { 
                console.log(response);
                //vypisPrilohy(response);
            },
            error: function (xhr) { }
        });
    })
});
</script>
</body>
</html>

试验
$(函数(){
$('[name=file]')。在('change',function()上{
var formData=new formData();
formData.append('file',$(this)[0].files[0]);
append(“url”,”https://stackoverflow.com/questions/51235726/spring-ajax-send-value-but-null');
$.ajax({
url:“/SERVISDEAIL/uploadSoubor”,
键入:“POST”,
processData:false,
contentType:false,
数据:formData,
成功:功能(响应){
控制台日志(响应);
//vypisPrilohy(响应);
},
错误:函数(xhr){}
});
})
});

我得到了类似
文件的输出:org.springframework.web.multipart.support.StandardMultipartTTPServletRequest$StandardMultipartFile@4b5db24c及https://stackoverflow.com/questions/51235726/spring-ajax-send-value-but-null
在控制台中

最后,我做了不同的事情。多谢各位

        $.ajax({
        url : "/servisDetail/uploadSoubor",
        type : 'GET',
        dataType: 'json',
        contentType: 'application/json',
        data : {
            fileSize: files.size,
            fileName: files.name,
            url: url
        },         
        success : function(response) { 
            console.log(response);
            vypisPrilohy(response);
        },
        error: function (xhr) { }
    });  

并使用
ByteArrayInputStream byteArray=newbytearrayinputstream(新字节[fileSize])

尝试将
类型:'GET'
更改为
类型:'POST'
我尝试了,但仍然是一样的。如果将
控制台.log(文件,url)
放在
$.ajax
之前,浏览器控制台会显示什么?[object File]和servisipozadavek/1/67[object File]是输入类型文件的输出我复制了这段代码,但我仍然在控制台中有输出文件:null和null。@Grossik这很奇怪。我的代码基于springboot-2.0.1.0版本,测试通过了chrome/IE11。请提供更多细节以帮助调查。我有Spring Framework 4.3.8和Spring Security版本4.2.2,并且chrome 65.0.3325.181(64位)中的测试通过。我建议您通过一些工具(如Postman)向该API发送一个文件。如果它正常工作,则表明API没有在javascript中正确调用,否则,Java代码一定有问题。至少试着缩小故障范围。在做了更多的测试之后,我怀疑您没有配置
多部件解析器
        $.ajax({
        url : "/servisDetail/uploadSoubor",
        type : 'GET',
        dataType: 'json',
        contentType: 'application/json',
        data : {
            fileSize: files.size,
            fileName: files.name,
            url: url
        },         
        success : function(response) { 
            console.log(response);
            vypisPrilohy(response);
        },
        error: function (xhr) { }
    });