SpringMVC和jQueryAjax用于文件上传,并希望在JQuery中读取SpringMVC返回的字符串

SpringMVC和jQueryAjax用于文件上传,并希望在JQuery中读取SpringMVC返回的字符串,jquery,ajax,api,spring-mvc,jquery-file-upload,Jquery,Ajax,Api,Spring Mvc,Jquery File Upload,我试图在Springs MVC中创建一个API来上传文件。我使用JQuery和AJAX来调用API。我可以上传文件,但无法读取Springs MVC在AJAX调用中返回的字符串。尝试了很多事情,但没有找到任何解决办法。我想请求你的帮助。我在下面粘贴了我的AJAX调用和Springs MVC代码 AJAX调用: $.ajax({ type: "POST", url: "http://localhost:8080

我试图在Springs MVC中创建一个API来上传文件。我使用JQuery和AJAX来调用API。我可以上传文件,但无法读取Springs MVC在AJAX调用中返回的字符串。尝试了很多事情,但没有找到任何解决办法。我想请求你的帮助。我在下面粘贴了我的AJAX调用和Springs MVC代码

AJAX调用:

         $.ajax({
                 type: "POST",

                 url: "http://localhost:8080/APIUtility/FileUpload",

                 data: data1,        

                 processData: false,
                 contentType: false,
                 cache: false,

                    success: function(data){

                            alert("Success");
                    },
                    error: function (data) {
                            alert("error");
                    },
                    complete: function(data){
                            alert("I am from Complete");

                    },
            });
Springs MVC API代码:

    @Controller
    public class MainController {


        @RequestMapping(value = "/FileUpload")
        public String UploadTemplate(@RequestParam(value = "uploadfile") MultipartFile file) throws Exception {



            String FileStatus;



            MultipartFile uploadedFile = file;
            String temp_string;
            file.getOriginalFilename();

            try{

            temp_string = uploadedFile.getOriginalFilename();
            temp_string = temp_string.substring(0, temp_string.lastIndexOf("."));
            System.out.println(temp_string);

            temp_string=temp_string.toLowerCase();

            File serverFile = new File("D://WebContent//"+ temp_string + "-template.xlsx");

            BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(serverFile));
            bout.write(uploadedFile.getBytes());

            bout.flush();
            bout.close();

            FileStatus="Success";
            return "Success" + FileStatus;

            } 

            catch (Exception e) {    

                   return "Fail";
               }





        }
谢谢你,
普尼思。

这里有一个ajax调用。尝试使用
@ResonseBody
注释定义控制器方法的响应类型

public @ResponseBody String UploadTemplate...

谢谢你的支持。我找到了上面列出的问题的答案

问题在于跨源资源共享(CORS)。早些时候,我没有用CORS配置Springs MVC

我刚刚添加了WebConfig类并添加了下面的代码,这为我的API启用了CORS

    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.CorsRegistry;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

    @Configuration
    @EnableWebMvc
    public class WebConfig extends WebMvcConfigurerAdapter {
      @Override
      public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**");
      }
    }  

嗨,我试过了。这对我不起作用。尽管成功地传输了文件,但在AJAX调用中总是会出现“error”部分。非常感谢。在控制台上登录时是否有任何错误?或者您可以检查http响应并为我们写一些关于它的信息(http状态等)。请求的资源上没有“Access Control Allow Origin”头。因此,不允许访问源“null”。这是我在Chrome控制台中看到的。AJAX调用中的statusText返回“error”,即使文件被放置在正确的位置。当我使用Postman时,我看到状态为200 OK received“Success”字符串。我可以请您告诉我如何在JQuery AJAX调用中读取上述状态200OK吗?请查看error函数中的数据变量。也许它告诉了我们一些有用的信息。@punitkumar,您能在ajax选项中尝试
数据类型:“text/plain”
?让我知道状态。@AtaurRahmanMunna,我这样做了,我看到statusText在文件成功上传到指定位置后仍保留“错误”。打开浏览器控制台,看看发生了什么错误?