使用json_encode输出换行符或换行符?

时间:2014-08-30 23:08:23

标签: javascript php jquery json

我是JSON格式的新手,请原谅我缺乏知识。但不知何故,我需要在我的json_encode数组中添加一些换行符,以便它将使用多行进行解析。我搜索过并搜索过,但没有任何东西符合我的情况。

输出为:

Following formats accepted: www.website.com website.com website.net/something

但是我想要输出这样的数据:

Website needs to be in the following formats:  
www.website.com  
website.com  
website.net/something

我试过了:

echo json_encode( 
    array( 'status' => 'failed',
           'message' => "Website needs to be in the following formats:\n
            www.website.com\n
            website.com\n
            website.net/something"
    ), JSON_PRETTY_PRINT);

但Javascript正在将其解析为文字字符串,因此新行被忽略并输出。我可以使用直接JSON格式将数据从PHP发送到javascript,还是必须使用数组?

我也尝试过使用<br />

编辑:
我输出以下方式:

$.ajax({
    url: "/forms/content_process.php",
    type:'POST',
    data: $(".content_cat").serialize(),
    processData: false,
    dataType: "json",
    success: function(response) {
        if (response.status == "failed") {
            $(".content_status").css( "background-color", "red" );
            $(".content_status").text(response.message).slideDown("normal");
        } else {
            $(".content_status").css( "background-color", "green" );
            $(".content_status").text("Your category was submitted!").slideDown("normal");
        }
    }
});

2 个答案:

答案 0 :(得分:6)

使用\n在字符串中插入换行符。也不要添加真正的换行符。

echo json_encode( 
    array( 'status' => 'failed',
           'message' => "Website needs to be in the following\nformats:\nwww.website.com\nwebsite.com\nwebsite.net/something"
    ), JSON_PRETTY_PRINT);

而不是在客户端将其插入dom之前,您需要使用<br />替换换行符或使用white-space: pre。或者,您可以使用段落<p></p>标记包围每一行。这样看看:jQuery text() and newlines

答案 1 :(得分:1)

回顾这个问题,对我来说,解决方案的简单性变得非常明显。我遇到这种困难的原因是因为我需要使用html格式。

当然它并不尊重<br />,我将其格式化为文本!这是我处理这种情况最简单的方法。

array( 'status' => 'failed',
       'message' => "Website needs to be in the following formats:<br />
        www.website.com<br />
        website.com<br />
        website.net/something"
), JSON_PRETTY_PRINT);

$(".content_status").html(response.message).slideDown("normal");