2010-11-23 2 views
0

이것은 내 코드입니다 :자바 스크립트 : 이상한 동작 == 문자열

 $.ajax({ 
    type: "POST", 
    url: "/myURL", 
    success: function(msg){ 
     alert(msg); 
     // aler prints success, but msg != "success" ???? 
     if (msg == "success") { 
      //my code 
     } else { 
      //other code 
     } 
    } 
}); 

뭔가가 발생했습니다 : 경고 대화 상자는 성공했지만 msg! = "success"를 출력합니다. 내가 뭘 놓치고 있니? 내 PHP는 그냥 "성공"또는 "실패"일부 작업을 기반으로 반환합니다.

+7

'/ myUrl'의 출력이 앞뒤 공백으로 성공을 반환 할 가능성이 있습니까? –

답변

1

는 조건문 전에를 넣어 :

msg= jQuery.trim(msg).toLowerCase(); 

당신이 JQuery와

를 사용하여 코드에 의해 가정
0

텍스트 주위에 공백이있을 수 있습니다.

이 문제를 해결할 수있는 확실한 방법으로 데이터를 JSON과 같은 특정 형식으로 반환 할 것을 제안 할 수 있습니다.

은 $의 아약스 구성에

dataType:'json' 

을 추가하고, 물론 PHP 출력 다른 가능성에 대한

header('Content-Type: application/json'); 
echo json_encode(array('msg'=>'success')); 

또는 'msg'=>'failure'을 보유하고 있습니다. JS에서 다음

,

success: function(data){ 
    alert(data.msg); 
    if (data.msg == "success") { 
     //my code 
    } else { 
     //other code 
    } 
1

시도 :

if (msg.trim().toLowerCase() == "success") 
{...} 

당신은 홍보해야 할 수도 있습니다 교차 브라우저가 지원되지 않는 경우 ototype a trim 메소드를 사용하십시오.

1

간단히 말해서, 비교를 위해 ===를 사용할 수 있습니다. 유용 할 수도 있습니다.