如何使用jQuery和PHP在单独的行上显示JSON响应

时间:2011-04-27 19:53:50

标签: php jquery ajax json

我正在使用AJAX提交表单,并希望在页面上显示信息摘要,以便用户在提交之前确认信息。我无法将结果显示在多行上。有关最佳方法的任何建议吗?

这是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,
                }
        }       
});

4 个答案:

答案 0 :(得分: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);  
}

答案 1 :(得分: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);

处理该data变量的JavaScript看起来像这样:

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

这使您可以分段处理数据,而不是一次性处理,因此操作和解析更容易。

答案 2 :(得分:0)

您需要插入<br />代码或插入\n,然后将内容放入pre代码中。记住你将这些内容注入一个html DOM,所以html规则仍然适用: - )

答案 3 :(得分:0)

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