>백엔드 개발 >PHP 튜토리얼 >Ajax 요청이 성공적으로 전송되었지만 성공하지 못하는 문제를 해결하는 방법

Ajax 요청이 성공적으로 전송되었지만 성공하지 못하는 문제를 해결하는 방법

小云云
小云云원래의
2018-01-19 09:53:383145검색

이 글은 Ajax 요청이 성공적으로 전송되었으나 성공으로 들어가지 못하는 문제에 대한 해결 방법을 주로 공유하며, 참고할만한 가치가 있어 모두에게 도움이 되기를 바랍니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.

1. 상황 설명: Ajax가 성공적으로 전송되고 백그라운드도 요청에 성공적으로 응답하며 json 데이터를 반환합니다. 또한 크롬을 통해 요청을 모니터링하여 응답 json 데이터를 볼 수 있지만 성공 방법이 입력되지 않습니다.

Front-end:

$.ajax({
 type : "get",
 data : {'dbId':node.dbId,'viewId':node.id,'date':new Date()},
 url : "${ctp}/ViewOperate/ShowViewSql",
 dataType : "json",
 success : function(data){
   console.log(data);
   layer.alert(data,{
     skin: 'layui-layer-molv'
   });
 }
 error : function(data){
   layer.alert("进入了error方法",{
     skin: 'layui-layer-molv'
   });
 }
});

Back-end:

@RequestMapping(value="/ShowViewSql",method=RequestMethod.GET)
@ResponseBody
public String showCreateViewSql(@RequestParam(value="dbId",required=false)Integer dbId,
   @RequestParam(value="viewId",required=false)Integer viewId) {
 return "abc";
}

원인: 백그라운드에서 반환된 json 데이터가 순수 문자열 형식 개체인 경우 프런트엔드 dataType 속성을 설정한 후 json으로 변환하는 경우 String 객체에서 변환된 json 데이터 형식이 표준 json 형식이 아닌 것으로 간주되므로 오류에 해당하는 메소드를 실행합니다.

해결책: 백엔드를 변경할 필요가 없습니다. 프런트엔드 Ajax 요청의 dataType 속성을 text

$.ajax({
   type : "get",
   data : {'dbId':node.dbId,'viewId':node.id,'date':new Date()},
   url : "${ctp}/ViewOperate/ShowViewSql",
   dataType : "text",
   success : function(data){
     console.log(data);
     layer.alert(data,{
       skin: 'layui-layer-molv'
     });
   }
   error : function(data){
     layer.alert("进入了error方法",{
       skin: 'layui-layer-molv'
     });
   }
});

특수 사례: 백엔드에서 반환된 json 번호가 "1", "2"와 유사한 경우, "22" , "232123", "-1", "232123.44" 숫자 문자열을 사용할 경우, 프런트엔드 dataType 속성을 json으로 설정하면 정상적으로 성공 메소드를 입력할 수 있습니다. 이유는 알 수 없습니다.

관련 권장사항:

Ajax 백그라운드 성공에서 전송된 json 데이터 문제에 대한 간략한 분석

ThinkPHP 페이지 점프 성공 및 오류 메서드 개요_PHP 튜토리얼

jQuery.ajax에서 성공과 완료의 차이

위 내용은 Ajax 요청이 성공적으로 전송되었지만 성공하지 못하는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.