我目前通过jQuery请求一些php页面上的文本。问题是新的行符号n
显示在警报窗口中,并且不被解释为新的行。我在任何时候都不转义字符串。
在我的jQuery请求的error: function(..)
块中,我通过jqXHR.responseText
得到php返回的字符串,这是它的确切值:
Some fields are empty!n$name= n$schedule= 480;1140;480;1140;480;1140;480;1140;480;1140;480;1140;480;1140n$free_connection= falsen$free_coffee= falsen$rating= -1n$lat= 44.715513732021336n$lng= 1.9775390625n
当我这样做时,新行不起作用:
alert(jqXHR.responseText);
所以为了调试,我决定将php响应字符串(这是之前的字符串)直接粘贴在alert()
函数中,在这种情况下,新行WORK:
alert("Some fields are empty!n$name= n$schedule= 480;1140;480;1140;480;1140;480;1140;480;1140;480;1140;480;1140n$free_connection= falsen$free_coffee= falsen$rating= -1n$lat= 44.715513732021336n$lng= 1.9775390625n)");
字符串完全相同,但是当我使用jqXHR获取它时,新的行不能工作。有人知道吗?
EDIT: php生成字符串的代码:
$errorMessage = 'Some fields are empty!' . 'n'
. '$name= ' . $name . 'n'
. '$schedule= ' . $schedule . 'n'
. '$free_connection= ' . $free_connection . 'n'
. '$free_coffee= ' . $free_coffee . 'n'
. '$rating= ' . $rating . 'n'
. '$lat= ' . $lat . 'n'
. '$lng= ' . $lng . 'n';
echo $errorMessage;
你用错引号了。在PHP中,转义序列不在单引号中处理,只在双引号中处理。所以应该是:
$errorMessage = 'Some fields are empty!' . "n"
. '$name= ' . $name . "n"
. '$schedule= ' . $schedule . "n"
. '$free_connection= ' . $free_connection . "n"
. '$free_coffee= ' . $free_coffee . "n"
. '$rating= ' . $rating . "n"
. '$lat= ' . $lat . "n"
. '$lng= ' . $lng . "n";
echo $errorMessage;
我不知道我是否理解得很好,但是你可以试试
$.ajax({
dataType: "json",
url: url,
data: data,
success: success
});
或
$.getJSON( "ajax/test.json", function( data ) {
var items = [];
$.each( data, function( key, val ) {
items.push( "<li id='" + key + "'>" + val + "</li>" );
});
$( "<ul/>", {
"class": "my-new-list",
html: items.join( "" )
}).appendTo( "body" );
});