Javascript Spring ajax发送值,但为空
我的ajax帖子有问题。 阿贾克斯: 和java: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,
@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) { }
});