Javascript 当字符串来自ajax调用时,为什么换行很重要

Javascript 当字符串来自ajax调用时,为什么换行很重要,javascript,jquery,html,ajax,string,Javascript,Jquery,Html,Ajax,String,我有一个php文件 test.php <!DOCTYPE html> <html> <head> <script src="/jquery.js"> </script> <script> $(document).ready(function(){ $.post("/text.php",function(result){ $("body").append(result);}); }); </script>

我有一个php文件
test.php

<!DOCTYPE html>
<html>
<head>
 <script src="/jquery.js"> </script>
 <script>
 $(document).ready(function(){
$.post("/text.php",function(result){ $("body").append(result);});
 });
</script>
</head>
 <body>
</body>
</html>
hello
far

faar


faar
我们知道在html中,所有的换行符和空格都会自动缩减为单个空格,但在这种情况下 换行符增加单词之间的间距


有什么想法吗?请检查网络历史记录中的内容类型标题


我假设text.php是text/plain,其中换行符是相关的。在第一个测试中,当文本被追加到HTML DOM中时,将忽略此选项。

如果您想
从结果中删除多个空格,请尝试此选项

$(document).ready(function(){
   $.post("/text.php",function(result){ result=result.replace(/\s+/g, ' '); $("body").append(result);});
});
如果您希望
将它们保持为text.php中的多行
,请尝试此操作

function nl2br(str, is_xhtml) {
     var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';
     return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
}    
$(document).ready(function(){
   $.post("/text.php",function(result){ result=nl2br(result); $("body").append(result);});
});
函数nl2br(str,is_xhtml){ var breakTag=(is|xhtml | typeof is|xhtml==='undefined')?“
”:“
”; 返回(str+'')。替换(/([^>\r\n]?)(\r\n |\n\r |\r |\n)/g,'$1'+breakTag+'$2'); } $(文档).ready(函数(){ $.post(“/text.php”,函数(result){result=nl2br(result);$(“body”).append(result);}); });
为什么不使用trim/rtril或ltrim php函数?关于换行符,请参见

您从Ajax调用收到的只是纯文本。如果使用jQuery附加纯文本,它将作为文本节点添加

您可以显式地将纯文本转换为HTML

 $(document).ready(function(){
   $.post("/text.php",function(result){
     $("body").append($(result));      // Notice the $ before result
   });
 });
或者您可以将文本包装在
p
span
元素中

 $(document).ready(function(){
   $.post("/text.php",function(result){
     $("body").append($("<p>" + result + "</p>"));      // Notice the $ before result
   });
 });
$(文档).ready(函数(){
$.post(“/text.php”),函数(结果){
$(“body”).append($(“”+result+“

”);//注意result之前的$ }); });
我的问题是否不清楚?这毫无意义。您应该不会得到任何换行符——所有的空白都减少到一个空格,如下所示:您是否尝试过使用php@rorymcrossan没有任何区别。HTML就是HTML。如果在AJAX请求中运行HTML时HTML不一样,请在DOM检查器中检查请求返回的内容。如果您愿意,请先尝试?