2012-07-02 180 views
1

我有一個有兩個輸入的小反饋表。我想讓錯誤消息在使用JQuery的同一個div中追加到另一個。如果只有一條錯誤消息,錯誤消息會正常工作,但當我返回兩個json對象時,兩條消息不會同時顯示。是否有可能使用相同的鍵返回2個關聯數組到JQuery?如何將錯誤消息追加到同一個div?一切工作正常,除了如何顯示錯誤消息。從PHP返回兩個2 json對象

注:此程序是一個jQuery Mobile應用程序

PHP代碼

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> 

預先感謝您。

編輯:我感覺很傻。我忘了在PHP腳本中附加錯誤消息哈哈。謝謝所有回答的人。

+0

JSON需要代表1個對象,當然你能想出辦法在一個物體的兩個錯誤消息。 – Musa

+0

啊,我這麼認爲。然後我會把我的信息放入一個對象中。我只是想看看是否有可能返回多個對象。謝謝。 – Sephiroth

回答

1

您可以連接所有你之前的錯誤迴應你的輸出是JSON格式

E.g

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

您不能將1個鍵映射到2個值。

+0

你可能會指導我如何讓消息在JQuery中相互追加到正確的方向嗎? – Sephiroth

1

我建議一個更簡單的,一維陣列結構來存儲的錯誤信息:

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

輸出它們從服務器:

echo json_encode($errors); 

然後使用jQuery.each()得到後迭代陣列之上您的POST響應:

$.each(error, function() { 
    // do something with each error 
});