ajax 요청 을 해결 하 는 데 성 공 했 지만 success 코드 블록 에 들 어가 지 않 습 니 다.

이 방법 이 반드시 당신 의 문 제 를 해결 할 수 있 는 것 은 아니 며, 구체 적 인 문 제 를 구체 적 으로 분석 할 수 있 습 니 다.궁금 한 점 이 있 으 면 교 류 를 환영 합 니 다.
판본
  • OS: windows 7
  • IDE: IDEA 2018.3.3
  • springboot: 2.1.0.RELEASE
  • thymeleaf: spring

  • 문제 코드
    JS 부분
    전단 페이지 에서 단 추 를 누 르 면 POST 요청 을 한 번 터치 한 다음 ajax 가 요청 한 결 과 를 되 돌려 받 은 후 현재 페이지 의 작은 div 를 렌 더 링 합 니 다.
     $.ajax({
         type: 'POST',
         url: "/queryCMSSetting",
         dataType: 'json',
         data: array,
         beforeSend: function () {
             process.show();
         },
         complete: function () {
             process.close().remove();
         },
         success: function (response) {
             console.log("here-1");
             $("#settingContent").html(response);
             console.log("here-2");
         },
         error: function (response) {
             alert("error");
         }
    

    백 엔 드
     @RequestMapping(value = "/queryCMSSetting")
     public String queryCMSSetting(@RequestParam String environment, 
    							   @RequestParam String configKey, Model model) {
    
         UpdateSettingDTO updateSettingDTO = new UpdateSettingDTO();
         updateSettingDTO.setConfigKey(configKey);
         updateSettingDTO.setEnvironment(environment);
         model.addAttribute("settingList", updateSettingService.updateSetting(updateSettingDTO));
         return "update_cms_setting::settingRow";
     }
    

    렌 더 링 과정 은 실제 적 으로 현재 페이지 요소 의 특정한 충전 블록 th:fragment="settingRow" 을 가 져 오 는 것 입 니 다. 이 충전 블록 에는 변 수 를 포함 합 니 다.spring / thymeleaf 는 변 수 를 구체 적 인 수치 로 채 운 후 요청 한 client 에 게 되 돌려 줍 니 다.뻔 해!!!웹 페이지 요소 이기 때문에 이 인터페이스 에서 돌아 오 는 content - type 은 분명 JSON 이 아 닙 니 다. 문 제 는 바로 여기에 있 습 니 다. 상기 AJAX dataType 를 보 았 습 니 다. 이 곳 은 json 입 니 다.
    문 제 를 해결 하 다
    저도 w3 school 에서 ajax 의 dataType / success 에 대한 설명 을 간단하게 도입 합 니 다.dataType 형식: String 이 예상 하 는 서버 에서 되 돌아 오 는 데이터 형식 입 니 다.지정 하지 않 으 면 jQuery 는 XML MIME 유형 과 같은 HTTP 패키지 MIME 정보 에 따라 자동 으로 스마트 하 게 판단 합 니 다.1.4 에 서 는 JSON 이 자 바스 크 립 트 대상 을 만 들 고, script 은 이 스 크 립 트 를 실행 합 니 다.다음 에 서버 에서 돌아 오 는 데 이 터 는 이 값 에 따라 분석 한 후에 리 셋 함수 에 전 달 됩 니 다.사용 가능 한 값: xml: XML 문 서 를 되 돌려 줍 니 다. jQuery 로 처리 할 수 있 습 니 다.html: 텍스트 HTML 정 보 를 되 돌려 줍 니 다.포 함 된 script 탭 은 dom 을 삽입 할 때 실 행 됩 니 다.script: 텍스트 자 바스 크 립 트 코드 를 되 돌려 줍 니 다.결 과 를 자동 으로 캐 시 하지 않 습 니 다."cache" 인 자 를 설정 하지 않 는 한.메모: 원 격 요청 시 (같은 필드 에 있 지 않 음) 모든 POST 요청 이 GET 요청 으로 전 환 됩 니 다.(DOM 의 script 탭 을 사용 하여 불 러 오기 때 문) json: JSON 데 이 터 를 되 돌려 줍 니 다.jsonp: JSONP 형식.JSONP 형식 으로 함 수 를 호출 할 때, 예 를 들 어 "myurl? callback =?" jQuery 는 자동 으로 교 체 됩 니까?정확 한 함수 명 을 위해 리 셋 함 수 를 실행 합 니 다.text: 일반 텍스트 문자열 을 되 돌려 줍 니 다.success 유형: Function 요청 성공 후의 리 셋 함수.매개 변수: 서버 에서 되 돌아 오고 dataType 매개 변수 에 따라 처리 한 데이터;상 태 를 설명 하 는 문자열 입 니 다.이것 은 Ajax 사건 이다.
    위의 설명 을 통 해 알 수 있 듯 이 success 는 dataType 과 관계 가 있다.이때 인터페이스 가 돌아 오 는 실제 dataType 은 당신 이 작성 한 dataType 과 차이 가 있 습 니 다. ajax 는 error 로 판정 합 니 다. 따라서:
    ajax 의 인자 dataType 을 변경 합 니 다.
    dataType: 'html',
    

    또는 (인 터 페 이 스 는 일반 텍스트 로 되 돌아 갑 니 다. 브 라 우 저 는 탭 에 따라 일반 텍스트 를 분석 합 니 다)
    dataType: text',
    

    모두 가능 하 다.문제 해결!!

    좋은 웹페이지 즐겨찾기