2012-07-02 8 views
1

두 개의 입력이있는 작은 피드백 양식이 있습니다. 오류 메시지를 JQuery를 사용하여 같은 div에 추가하려고합니다. 오류 메시지가 하나만있는 경우 오류 메시지가 제대로 작동하지만 두 개의 json 개체를 반환하면 두 메시지가 동시에 표시되지 않습니다. JQuery와 동일한 키를 가진 2 개의 연관 배열을 반환 할 수 있습니까? 같은 div에 오류 메시지를 어떻게 추가합니까? 오류 메시지가 표시되는 방법을 제외하고 모두 제대로 작동합니다.PHP에서 두 개의 json 객체 두 개를 반환하는 중

참고 :이 프로그램은

if (isset($_POST['submit'])) { 

    $email = $_POST['email']; 
    $feedback = $_POST['feedback']; 
    $errors = array(); 

    if (filter_var($email, FILTER_VALIDATE_EMAIL) && !empty($email)) { 
       //Do something 
    } else { 
     $errors = "Invalid email."; 
     echo json_encode(array("error" => "{$errors}")); 

    } 

    if (!empty($feedback)) { 
       //Do something 
    } else { 
     $errors = "Feeback field can not be empty."; 
     echo json_encode(array("error" => "{$errors}")); 
    } 

    if (empty($errors)) { 
     //Database Insertion here 
     echo json_encode(array("success" => "Feedback submission successful.")); 
    } 
} 

JQuery와 코드

$(function() { 
    $('#contact_form').bind('submit', function(event) { 
     event.preventDefault(); 
     $.post('includes/form.php', $(this).serialize(), function(data) { 
      if (data.error) { 

       $('.error').slideDown(100).html(data.error); 

      } else { 
       $('.error').hide(); 
       $('.success').slideDown(100).html(data.success); 
      } 

     }, "json"); 
    }); 
}); 

HTML 양식 코드

  <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>" id="contact_form" data-ajax="false"> 
      <label for="email">Email:</label> 
      <input type="text" name="email" id="email" placeholder="Email"> 

      <label for="feedback">Feedback:</label> 
      <textarea type="text" name="feedback" id="feedback" placeholder="Feedback"></textarea>    
      <input type="submit" name="submit" value="Submit Feedback" class="submit"> 

     </form> 

가 사전에 감사 JQuery와 모바일 응용 프로그램

PHP 코드를입니다.

편집 : 너무 어리 석다. PHP 스크립트 haha에 오류 메시지를 추가하는 것을 잊었습니다. 대답 한 모든 사람에게 감사드립니다.

+0

JSON에 당신의 출력을 에코. – Musa

+0

아, 그렇게 생각했습니다. 그러면 내 메시지를 하나의 객체에 넣을 것이다. 나는 하나 이상의 객체를 반환 할 수 있는지보고 싶었습니다. 감사. – Sephiroth

답변

1

당신이 이전에 오류가 확실히 당신이 하나의 객체에 두 개의 오류 메시지가 할 수있는 방법을 마련 할 수, 1 개체를 표현하기 위해 필요 JSON 형식

예컨대

if (isset($_POST['submit'])) { 

$email = $_POST['email']; 
$feedback = $_POST['feedback']; 
$errors = ""; 

if (filter_var($email, FILTER_VALIDATE_EMAIL) && !empty($email)) { 
      //Do something 
} else { 
    $errors .= "Invalid email.<br/>"; 


} 

if (!empty($feedback)) { 
      //Do something 
} else { 
    $errors .= "Feeback field can not be empty.<br/>"; 
} 

if ($errors != "") { 
    echo json_encode(array("success" => "Feedback submission successful.")); 
}else{ 
    echo json_encode(array("error" => $errors)); 
} 
2

2 개의 키 맵을 가질 수 없습니다. 서버에서

$errors[0] = 'error message one'; 
$errors[1] = 'error message two'; 

출력을 : :

echo json_encode($errors); 

그런 다음받은 후 배열을 반복 jQuery.each()를 사용

+0

JQuery에서 메시지를 서로 추가하는 방법에 대해 올바른 방향으로 안내해 줄 수 있습니까? – Sephiroth

1

나는 오류 메시지를 저장하기 위해 단순하고 1 차원 배열 구조를 제안한다 귀하의 POST 응답 :

$.each(error, function() { 
    // do something with each error 
}); 
관련 문제