2011-04-27 40 views
1

我正在使用AJAX提交表單,並希望在頁面上顯示信息的摘要,以便用戶可以在提交之前確認信息。我無法將結果顯示在多行上。任何建議最好的方式來做到這一點?如何使用jQuery和PHP在單獨的行上顯示JSON響應

這裏是PHP:

$return['message'] = 'First Entry: ' . $_POST['Name1'] . ' ' . 'Second Entry: ' . $_POST['Name2'] . ' ' . 'Third Entry: ' . $_POST['Name3']; 

echo json_encode($return); 

這裏是jQuery的:

$("#mark-form").validate({ 
    submitHandler: function(form) { 
      $(form).ajaxSubmit({     
       type: "POST", 
       data: { 
        "Name1" : $('#Name1').val(), 
        "Name2" : $('#Name2').val(), 
        "Name3" : $('#Name3').val() 
         }, 
       dataType: 'json', 
       url: './includes/ajaxtest3.php', 
       error: function() {alert("Error");}, 
       success: 
       function(data) { 
        $('<div id="output2"></div>').insertAfter($('#agreement-information')); 
        $('#output2').html(data.message).show(500); 
        $('#ouput2').append(data); 
       },  
    }); 

return false; 
    }, 
     errorPlacement: function(error,element) { 
         return true; 
       }, 
     rules: { 
      "Name1": { 
       required: true, 
       } 
     }  
}); 

回答

1

您可以將JSON編碼的HTML換行是這樣的:

$return['message'] = 'First Entry: ' . $_POST['Name1'] . '<br /> ' . 'Second Entry: ' . $_POST['Name2'] . '<br /> ' . 'Third Entry: ' . $_POST['Name3']; 
echo json_encode($return); 

或轉換換行符(\ n)轉換換行標籤。

更好的方法是通過例如將這種處理留給客戶端。返回消息的數組:

$return['message'] = array(); 
$return['message'][] = 'First Entry: ' . $_POST['Name1']; 
$return['message'][] = 'Second Entry: ' . $_POST['Name2']; 
$return['message'][] = 'Third Entry: ' . $_POST['Name3']; 
echo json_encode($return); 

而離開處理客戶端(也許客戶想要裹在一個段落標記後面的信息):

function(data) 
{ 
    $('<div id="output2"></div>').insertAfter($('#agreement-information')); 
    $('#output2').html(data.message.join('<br />')).show(500); 
    $('#ouput2').append(data); 
} 
+0

非常有幫助。謝謝! – Ken 2011-04-27 20:20:58

0

一般要在陣列使用json_encode。所以,你的PHP數組看起來像:

$arr = array('foo' => 1, 'bar' => 2, 'baz' => 'test'); 
// you can probably just use $_POST here, i.e. $arr = $_POST 

echo json_encode($arr); 

而JavaScript處理那些data變量應該是這樣的:

$('#id').html(data.foo + "<br />" + data.bar + "<br />" + data.baz); 

這可以讓你處理你的數據分段,而不是在一個疙瘩,所以更容易操作和解析。

0

您需要插入<br />標籤或插入\n,然後將標籤內容放入pre標籤。 Remeber您注射此內容到HTML DOM使HTML規則仍然適用:-)

0
$return['message'] = 'First Entry: ' . $_POST['Name1'] . '<br />' . 'Second Entry: ' . $_POST['Name2'] . '<br />' . 'Third Entry: ' . $_POST['Name3'];