2014-10-06 2 views
1

아래 코드는 매우 간단합니다. 기본적으로 변수 "ret"가 값을 반환하고 값이 "fail"이면 경고 : "Trigger 2"를 게시해야합니다. 그러나 문제는 IF 문입니다. Alert : "Trigger 1"을 트리거하고 조건문이 나타나면이를 건너 뜁니다.jquery : if 문이 작동하지 않습니다.

내가 잘못하고 있는지 알고 싶습니다. 고맙습니다. 응답이 실제로 fail 경우

$(function() { 
    var body = $(document).find("body");  
    body.on("submit", "#form-user-profile", function (e) { 
     var data = $(this).serialize(); 
     var url = $(this).attr("action"); 
     $.post(url, data, function(ret) { 
      alert("Trigger 1"); // Triggers alert 
      if (ret == "fail") { 
       alert("Trigger 2"); // does not trigger alert 
      } 
     }); 
     return false; 
    }); 
}); 
+2

글쎄, 만약'if'가 건너 뛰면'ret'는''fail "'이 아닙니다. AJAX 게시가 완료되었을 때'ret'의 값이 실제로 무엇인지 확인하기 위해 디버깅을 시도 했습니까? 예를 들어, 콜백에서'ret'의 값을 경고하거나 로깅합니까? – ajp15243

+0

함수에서 반환 한 브라우저 디버거 도구를 사용하십시오. –

+0

@ ajp15243 : 예. "fail"로 게시되지만 경고문을 작성하고 "ret"값을 게시하지만 IF 문이 오면 완전히 무시합니다. – Jo3L

답변

1

는 대부분 문제는 문이 false로 평가하는 경우가 발생 응답을 둘러싼 몇 가지 공백입니다. 응답을 잘라 내면 해결할 수 있습니다.

if ($.trim(ret) == "fail") { 
+0

정말 고마워요! 그게 효과가 있었어! – Jo3L

1

코드가 실제로 실행 중이면 Chrome 또는 Firefox 개발 도구를 사용하여 게시 URL의 응답 헤더를 볼 수 있습니다. 그러면 실제 응답이 무엇인지 알려주고 대답을 디버그하는 데 도움이됩니다. 사용자가 가지고있는 것과 가까운 것으로 단순히 반환한다는 것을 상상해보십시오.

+0

예, 실제로 firebbug 2.0.4를 사용하여 응답을 추적합니다. – Jo3L

관련 문제