Почему responsebody аннотация return String приведет к ошибке ajax? - PullRequest
0 голосов
/ 18 апреля 2019

Почему springmvc возвращает какую-то строку, вызывает ошибку ajax!

, когда контроллер возвращает целое число, например, 123, работает нормально;

, когда контроллер возвращает целочисленную строку, например,«123», работает нормально;

когда контроллер возвращает String, например «abc», ajax выдаст ошибку!

Проблема такая же, как https://www.mkyong.com/jquery/jquery-ajax-request-return-200-ok-but-error-event-is-fired/

Это просто запрос ajax к контроллеру springmvc

запрос ajax

           $.ajax({
                type: "POST",
                url: "/test",
                data: JSON.stringify(json),
                dataType: "json",
                async : false,
                contentType: "application/json",
                success: function(msg){
                    alert(msg);
                    debugger;
                    result = msg;
                },
                error: function(msg){
                    debugger;
                    alert(msg);
                }
            })

файл контроллера:

         @RequestMapping("test")
         public String test(){
          //return "123"; ajax works fine
           return 123; ajax works fine
           return "abc";  //ajax parsererror
         }

Я ожидаю все виды строкбудет хорошо, включая String, как "abc"!
Может ли кто-нибудь мне помочь!
Спасибо!

1 Ответ

0 голосов
/ 18 апреля 2019

Поскольку Json, 123 является квалифицированным JSON, потому что он рассматривается как число. Но abc не является квалифицированным JSON, «abc» является квалифицированным JSON. SpringMvc возвращается в front web с помощью abc, а не «abc», поэтому ajax не может разрешить его.

Два решения я могу рассмотреть. Первый ответ: используйте класс Util для украшения abc с помощью "abc"; Каждый раз, когда вы возвращаете String, вам нужно делать это с трудом.

public class StringUtils {
    public static String modifyReturnJson(String str){
        return  "\""+str+"\"";
    }
}
@RequestMapping("/test")
    public String test() throws IOException {
        return StringUtils.modifyReturnJson("123");
        //return "123"; ajax works fine
//        return 123; //ajax works fine
//        return "abc";  //ajax parsererror
    }

Второй способ: удалить dataType: "json"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...