Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql没有保留jQueryAjax帖子中的换行符?_Php_Mysql_Jquery - Fatal编程技术网

Php Mysql没有保留jQueryAjax帖子中的换行符?

Php Mysql没有保留jQueryAjax帖子中的换行符?,php,mysql,jquery,Php,Mysql,Jquery,我有一个PHP/Mysql应用程序,允许用户发布表单中的文本。当我将HTML文本区域中的文本插入mysql表时,它不会保留回车/换行符。文本不会以“Hey SO,\n这是新行”的形式存储在数据库中。它在列中存储为空白(与键入的内容完全相同),但我无法使用nl2br()输出它并保留分隔符。在插入文本之前,我将进行转义,如下所示: $foo_text = mysql_real_escape_string(ucfirst($_POST['foo_text'])); 但是,即使我删除了所有内容,只使用

我有一个PHP/Mysql应用程序,允许用户发布表单中的文本。当我将HTML文本区域中的文本插入mysql表时,它不会保留回车/换行符。文本不会以“Hey SO,\n这是新行”的形式存储在数据库中。它在列中存储为空白(与键入的内容完全相同),但我无法使用
nl2br()
输出它并保留分隔符。在插入文本之前,我将进行转义,如下所示:

$foo_text = mysql_real_escape_string(ucfirst($_POST['foo_text']));
但是,即使我删除了所有内容,只使用POST参数,它仍然会做同样的事情。这和我通过ajax序列化和发布表单(我使用的是JQUERY)有什么关系吗?我找到了,但我真的没有找到解决办法。我的帖子是:

$.ajax({
        type: "POST",
        url: "insertFooBar.php",
        data: $("#foo_form").serialize(),
        success: function(msg) {
            ETC...
        }
    })
这里有什么明显的我遗漏的吗?我被卡住了


提前感谢您的帮助

我从未遇到过将HTML表单中的数据插入数据库的问题,无论是正常提交的表单还是使用AJAX

您是否尝试过在没有AJAX的情况下提交表单?结果如何?我想建议您使用,这样您就不必手动执行AJAX请求

我还想建议您使用将数据保存到数据库中。这个库提供了一个很好的跨数据库抽象。我在插入/更新数据时没有发现任何问题,所有值转义都是自动完成的。以下是使用以下方法进行更新的示例:


我希望这些库能对您有所帮助。

谢谢您的回答。最后我删除了serialize()并将每个参数作为字符串手动发送。我在我的文本区添加了
$(“#foo_bar”)。替换(/\n/g,
作为一种解决方法,现在我可以休息了。但愿我不必对此进行破解以使其正常工作,但它完成了任务。

问题是序列化应将换行符编码为%D0%DA,但jQuery将其编码为%0A

我找到的唯一(无优雅)解决方案是获取表单序列化字符串,然后使用替换函数对其进行修改,如:

function keepLB (str) {    
  var reg=new RegExp("(%0A)", "g");
  return str.replace(reg,"%0D$1");
}
修改序列化字符串后,我将使用$.post()函数发送它


希望这会有帮助

我认为换行符不属于数据库。这是一个渲染问题,操作系统依赖于boot.MySQL将在一个字段中存储换行符,如果您确定它们不在数据库中,它们将被其他内容删除Hey duffymo,我不确定如何在不将换行符保存在数据库中的情况下按用户的意图存储输入?大卫,谢谢你的回答,我想你是对的。我刚刚检查了firebug,看起来这将是特定于Jquery的。。。它在进入后端脚本之前已删除“\n”。
function keepLB (str) {    
  var reg=new RegExp("(%0A)", "g");
  return str.replace(reg,"%0D$1");
}