2011-05-04 2 views
2

내 양식이 jQuery를 통해 PHP에서 데이터를 반환하고 있습니다. jQuery의 응답을 기반으로 조건문을 작성하려면 어떻게해야합니까?jQuery를 통한 PHP 응답을 기반으로하는 조건문

$.ajax({ 
        type: "POST", 
        url: "createAlbum.php", 
        data: postData, 
        success: function(data){ 
         $('#message').fadeIn(); 
         $('#message').html(data); 
        } 
        }); 

이 PHP로 반환하는 것입니다 :

은 jQuery를 인 응답이 성공 인 경우

if($error) { 
     echo $error; 
    } 
    else { 
     echo $success; 
    } 

그래서, 메시지가 몇 초 후 숨해야하지만, 경우 그것은 오류입니다, 그것은 사용자가 그것을 수정할 때까지 기다려야합니다. 이런 식으로 뭔가 :

success: function(data){ 
        $('#message').fadeIn(); 
        $('#message').html(data); 

        if (data.response == 'success') { 
         alert('Success'); 
         setTimeout(function() { 
          $('#message').fadeOut(); 
          }, 5000); 
        } else if (data.response == 'error') { 
          alert('Error'); 
         } 
      } 
+0

? 그것은 나에게 꽤 많이 보인다. –

+0

그건 나를 위해 작동하지 않습니다. 데이터가 맞더라도 오류 경고가 반환됩니다. – input

+0

당신이 이것을 알아 냈습니까? 그 대답이 당신에게 효과가 있었습니까? –

답변

3

ajax()에 전화에 대한 statusCode 설정을 사용하고 단지 "성공"및 "오류"보다 더 세밀하게 제어 할 수 없습니다? 스크립트가 성공하거나 실패 할 수있는 여러 가지 방법이 있습니다. {}

응답이 해당 코드가있는 경우 숫자 HTTP 코드와 기능의지도가 호출 될 :

에 statusCode지도 기본 (1.5 추가).

$ 아약스 ({에 statusCode : { 404; }} 함수() { 경보() '페이지를 찾을 수 없습니다'} 응답 상태가 404 일 때 예를 들어, 다음 경고 것); 요청이 성공하면 상태 코드 함수는 성공 콜백과 동일한 매개 변수를 사용합니다. 오류가 발생하면 동일한 매개 변수 을 오류 콜백으로 사용합니다.


UPDATE :

나는 JQuery와의 ajax() 통화에 statusCode 대신의 성공 및 오류 설정을 사용하는 방법의 예를 추가했습니다. 첫째, 테스트 UI : 여기

<html> 
<head> 
<title>jQuery Test Page</title> 
<script type="text/javascript" src="jquery-1.6.js"></script> 
<script type="text/javascript"> 
function displayMessage(message){ 
    $('#message').fadeIn(); 
    $('#message').html(message); 
} 

function successFunction(data){ 
    displayMessage(data); 
} 

function notFoundFunction(){ 
    displayMessage("Not Found!"); 
} 

function errorFunction(){ 
    displayMessage("An Error Occurred!"); 
} 

function invokeAjax(test){ 
    $.ajax({ 
     type: "POST", 
     url: "test.php?test="+test, 
     //data: postData, 
     statusCode: { 
      200: successFunction, 
      404: notFoundFunction, 
      500: errorFunction, 
     } 
    }); 
} 
</script> 
</head> 

<body> 
<h1 id="message" style="display:none;"></h1> 
<a href="javascript:invokeAjax('success');">Invoke Ajax - Success (200)</a><br> 
<a href="javascript:invokeAjax('notfound');">Invoke Ajax - Not Found (404)</a><br> 
<a href="javascript:invokeAjax('error');">Invoke Ajax - Error (500)</a><br> 
</body> 
</html> 

그리고는 Ajax를 호출하는 PHP 스크립트입니다 :

<?php 

$test = $_GET['test']; 

if($test == 'success'){ 
    echo 'some meaningful data'; 
} else if($test == 'notfound') { 
    http_send_status(404); 
} else if($test == 'error'){ 
    http_send_status(500); 
} 
?> 

나는 꽤 단정 생각,하지만 당신은 더 이상 질문이 있으면 주저하지 말고 묻다.물론

+0

답변 해 주셔서 감사합니다. 어떻게 위의 스크립트에서'statusCode'를 사용할 수 있습니까? – input

0

도움이되는 답변에 감사드립니다. JSON을 사용하여 해결했습니다!

PHP :

if($error) { 

     echo json_encode(array('success' => false, 'text' => $error)); 
    } 
    else { 

     echo json_encode(array('success' => true, 'text' => $success)); 
    } 

jQuery를 : 무슨 일

if (data.success) { 
      alert('Success'); 
      setTimeout(function() { 
       $('#message').fadeOut(); 
      }, 5000); 
    } else { 
     alert('Error ' + data.text); 
    } 
+0

좋은 일을 알아 냈어. 다른 방법으로보고 싶다면 내 업데이트 된 답변을 확인하십시오. –