【问题标题】:PHP, ajax, javascript, mysql: New Line/Carriage Return in a table not recognizedPHP、ajax、javascript、mysql:无法识别表中的换行符/回车符
【发布时间】:2018-08-22 07:50:11
【问题描述】:

我目前正在处理http://www.webslesson.info/2017/07/live-add-edit-delete-datatables-records-using-php-ajax.html 上的以下示例(整个代码已在此页面上列出)- 除了换行符/回车符之外,一切对我来说都很好。

每当我在First Name或Last Name字段中按'enter'键时,为了添加新行,它基本上不会识别它。

在源页面文件中,我在函数 fetch data() 之后添加了下面列出的代码 - 请参阅链接:http://jsbin.com/yufovobinu/edit?html,output 但似乎它没有帮助,并且在姓氏字段中仍然无法识别回车/换行。我使用姓氏字段作为通用示例,但它会发生在我输入到该字段的任何文本上。 此外,我还包括一个视频,以可视化当我在“姓氏”字段中键入文本然后按“输入”键并将数据插入 mysql 数据库时会发生什么(它在没有新行的情况下发送数据并在没有新行的情况下返回它行):http://www.filedropper.com/issue

请帮忙!提前致谢!

$(document).ready(function() {

$('#user_data').keyup(function() {

$('#data2').html($(this).val().replace(/\r?\n/g, '<br />'));

【问题讨论】:

  • 显示元素 #text 和 #input 的 HTML,它们在您指向的 URL 中不存在。
  • 对不起,我试过了,我把它包含在源页面文件中: $(document).ready(function() { $('#user_data').keyup(function() { $('#data2').html($(this).val().replace(/\r?\n/g, '
    '));
  • 很抱歉,您必须粘贴更多内容,真的很难理解您在做什么。您可以编辑此内容吗:jsbin.com/wijowap/edit?html,output 单击文件 - 保存,然后将 URL 粘贴到此处?
  • 我建议设置text而不是html,这样就不用换行了,对XSS也更安全。像这样:$('#data2').text($(this).val());
  • @acdcjunior 我编辑并保存了我试图添加到初始源页面的部分代码。另外包括一个视频来可视化我的问题。我希望现在它更有意义,很抱歉没有具体说明,但我只是一个初学者:)

标签: javascript php ajax


【解决方案1】:

好的,现在我明白你到底想做什么了。完全不需要keyup事件,也可以直接通过ajax发送数据,在文本中换行符不变的情况下存入数据库。

为了在打印表格时正确显示存储的值,您必须从 PHP 输出:

echo nl2br(htmlentities($row['columnName']));

htmlentities 会阻止其他 HTML 标签被执行(XSS 漏洞),然后使用 PHP 的原生优化函数 nl2br 以智能方式将所有类型的新行 (\r, \r\n, \n) 替换为 &lt;br&gt; 标签。

【讨论】:

  • 所以这意味着我应该忘记整个 keyup 的事情 = 从 ajax 中完全删除它?并输入: echo nl2br(htmlentities($row['last_name']));在完全相同的地方?或在我的源页面的不同部分?我也尝试将它包含在我什至有 keyup 的同一个地方: 但到目前为止还没有运气:( 我很确定我做错了什么......对不起,如果可能的话,我需要更多细节来完成它:(
  • 不,我的意思是从 JavaScript 代码中删除 keyup 代码,并在使用 PHP 填充表格时使用 nl2br 和 htmlentities。您还没有发布任何 PHP 代码。读取 AJAX 调用它应该是 fetch.php。最好发布代码,我不知道它如何输出该表的数据,可能是纯 HTML、json 编码字符串或其他一些东西
  • 我从 JavaScript 中删除了 keyup 代码,然后我通过上面建议的 echo 进入 fetch.php:jsbin.com/vanotemazo/edit?html 我不确定我是否会去正确的地方此脚本用于放置 nl2br。
  • 是的,这是正确的地方,但是您需要删除 echo 关键字,因为您正在构建一个字符串,所以它将是:nl2br(htmlentities($row['last_name'])) 也没有分号,因为字符串继续...... .
  • 我在尝试打开源页面时收到此错误消息,而带有 nl2br 的 echo 已插入到 fetch.php 中:DataTables 警告:表 id=user_data - Ajax 错误。有关此错误的更多信息,请参阅datatables.net/tn/7
猜你喜欢
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
相关资源
最近更新 更多