[英]How to save user input linebreak to database. (jQuery/php/mysql)
問題是: 如何將用戶輸入換行符保存到數據庫。 (jQuery / php / mysql)
我有一個可由用戶編輯的段落。
<p contenteditable="true" id="forbiddenField">Text</p>
當我以此從數據庫中檢索數據時:
<p contenteditable="true" id="forbiddenField"><?php echo nl2br($forbidden); ?></p>
而且效果很好。
onblur(.blur)將激活一個jQuery腳本,該腳本會將新編輯的數據發送到數據庫。
$("#forbiddenField").blur(function(){
var whatIsNowForbidden = encodeURI($("#forbiddenField").text());
$.ajax({
type: "POST",
url: "updateForbidden.php",
data: "forbiddenStuff="+ whatIsNowForbidden,
success: function(){
}
});
});
問題:如果用戶插入帶有換行符的新數據,則該換行符不會添加到數據庫中的數據中,而只會添加內容。
我在其他方面進行了嘗試:var whatIsNowForbidden = encodeURI($(“#forbiddenField”)。text());
我在這些地方找到了答案:將Textarea中的新行轉換為<br/> http://www.w3schools.com/tags/ref_urlencode.asp 替換換行符UTF-8安全嗎? 如何轉義輸入但不轉義保存到數據庫中 如何識別每個換行符?
我無法正常工作。 非常感謝所有輸入和提示!
嘗試從您的JavaScript中刪除encodeURI()
函數,如下所示:
var whatIsNowForbidden = $("#forbiddenField").text();
我做了一個小提琴來測試這一點,而javascript的encodeURI()
函數似乎並沒有像我們期望的那樣將段落中的新行轉換為%0A
。
通過刪除函數encodeURI()
PHP應該能夠將文本(包括新行)保存到數據庫中。 然后,PHP的nl2br()
應該nl2br()
將新行轉換為<br />
標記。
小提琴可在這里找到: http : //jsfiddle.net/LN7QC/
最終答案:使用<textarea>
jQuery:
$("#forbiddenField").blur(function(){
var whatIsNowForbidden = $("#forbiddenField").val();
$.ajax({
type: "POST",
url: "updateForbidden.php",
data: "forbiddenStuff="+ whatIsNowForbidden,
success: function(){
}
});
});
添加到數據庫:
<?php
include('connect.php');
if($_POST['forbiddenStuff']){
$forbiddenInput = $_POST['forbiddenStuff'];
}
If($forbiddenInput){
mysql_query("SET NAMES 'utf8'");
$changeDataInDB = "UPDATE heroes_and_helpers SET forbidden='$forbiddenInput' WHERE name ='sabina'";
mysql_query($changeDataInDB);
}
?>
從數據庫中獲取:
mysql_query("SET NAMES 'utf8'");
$fetchForbidden = mysql_query("SELECT * FROM heroes_and_helpers WHERE name='sabina'");
if (!$fetchForbidden)
{
die('Ngt ar fel: ' . mysql_error());
}
$whatIsForbidden = mysql_fetch_array($fetchForbidden);
$forbidden = $whatIsForbidden['forbidden'];
在網站上:
<textarea id="forbiddenField" style="width: 450px; height: 500px;"><?php echo $forbidden; ?></textarea>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.