\ n在Javascript中打破PHP代码

时间:2016-07-03 05:32:50

标签: javascript php

当我在我的PHP网站上运行此代码时,它可以正常工作,但在文本之后添加\ n时:'作为php创建一个新行,表格中的条目在顶部停止显示的蓝色标题下方。下面是代码的代码片段,但它不运行php,因此它不会显示错误。



function MyCtrl($scope) {
  $scope.environment_service_packages = 
    [
      {name: 'obj1', info: {text: '<?php echo "This: \n breaks the code"; ?>', show: true}},
      {name: 'obj2', info: {text: 'some extra info for obj2', show: false}},
    ];
}
&#13;
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body ng-app>
  <table ng-controller="MyCtrl" class="table table-hover table-striped">
    <tr class="info">
      <td>...</td>
    </tr>
    <tbody ng-repeat="x in environment_service_packages">
      <tr ng-click="x.info.show = !x.info.show">
        <td> {{ x.name }}
      </tr>
      <tr ng-show="x.info.show">
        <td>
          {{ x.info.text }}
        </td>
      </tr>
    </tbody>
  </table>
</body>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

你实际上需要两次逃避换行。 JavaScript的一个转义和php的一个转义

您当前的字符串会生成此php:

<?php echo "This: 
breaks the code"; ?>

因为\n被javascript计算为换行符,这使得php无效。

您应该使用此字符串:

'<?php echo "This: \\n does not break the code"; ?>'

答案 1 :(得分:2)

\ n不会以HTML格式显示。你必须这样编码。

function MyCtrl($scope) {
   $scope.environment_service_packages = 
[
  // &lt;br&gt; will be convert to <br>
  {name: 'obj1', info: {text: '<?php echo "This: &lt;br&gt; breaks the code"; ?>', show: true}}, 
  {name: 'obj2', info: {text: 'some extra info for obj2', show: false}},
];
}