2011-02-15 3 views
2

나는 기본적으로 반환 된 파일 (PHP 파일)의 결과에 따라 자바 스크립트에서 다른 작업을 수행하는 일부 아약스 작업을 시도하고있다. 예를 들어ajax의 결과에 따라 다른 js 작업을 수행하는 방법은 무엇입니까?

, 나는 다음과 같은 일을 해요 말 :

$.ajax({ 
    type: 'POST', 
    url: '/something.php', 
    data: 'something=something', 
    cache: false, 
    success: function(data) { 
     $('#something').html(data); 
    } 
    }); 

내 뭔가 DIV 뭔가의 경우 성공을 반환합니다. 내부 'something.php은'그러나, if 문과 같이있을 수 :

if($_POST['something'] == 'not_something') { 

    // execute something here 

} else { 

    // do something else 

} 

것은 내가 PHP 코드를 결과에 따라 실행하고있어 자바 스크립트가 될 것입니다, 그리고 무엇이다. 예를 들어, 현재 나는 이렇게 할 수 있습니다 :

if($_POST['something'] == 'not_something') { 

    echo '<script type="text/javascript">thissucks();</script>'; 

} else { 

    echo '<script type="text/javascript">atleastitworks();</script>'; 

} 

그러나 그것은 나에게 맞지 않는 것처럼 보입니다. 이런 종류의 일이 더 나은 방법이 있습니까?

또 다른 시나리오는 결과가 있는지 없는지에 따라 다른 일을하는 일종의 아약스 검색 기능 일 것입니다. 이런 종류의 일. 위에서 한 것처럼 정말 멋있는 인라인 자바 스크립트를 쓰지 않고 어떻게하나요?

답변

3

PHP의 json_encode을 사용하여 jQuery $.ajax() 함수에 명령을 다시 제공하는 배열을 포맷 할 수 있습니다. 이와 같은 :

<?php 

if($_POST['something'] == 'not_something') { 
    echo json_encode(array('status'=>'thissucks')); 
} 

성공에 대한 $.ajax() 익명 함수의 시점에서이 같은 문자 그대로의 모습을 객체 : 행운의

$.ajax({ 
    type: 'POST', 
    url: '/something.php', 
    date: 'something=something', 
    cache: false, 
    dataType: 'json', //this is important! 
    success: function(data) { 
     if(data['status']=='thissucks'){ 
     //do something here 
     } 
    } 
    }); 

최고!

UPDATE 는 평가() json으로 만들기 위해 모든 중요한 데이터 유형 속성을 잊으셨습니까!

+0

정말 멋지다 !! 나는 1 년 전에이 질문을 했어야했다. – willdanceforfun

+0

그것이 당신을 위해 일하는 경우 알려주십시오 :) – philwinkle

관련 문제