我在PHP/Jquery中遇到了一个问题。
我想要什么:我有一个PHP页面,我用它来更改我网站上的文章。该页面包含PHP中的文本和文本区域以及1个按钮。当我进入该页面时,该页面会自动从数据库中填充任何文本表单和文本区域。我用这个表格写了一些包含大约200-800个字符的文章。这篇文章包含一些使用Enter键的换行符。当我按下"我的保存"按钮时,文本区域和文本表单中的文本将存储在SQL数据库中,并使用VARCHAR/text类型替换OLD文章。我的保存按钮只是重新加载同一个页面,并使用PHP将文本保存在文本区域。我只是成功地动态地做到了这一点,所以当我按下保存按钮时,文本区域和任何其他形式的文本都不会变回旧文章。
问题:当文本区域中的文本从回车键换行(而不是换行)时,当我从保存按钮或仅从其他页面访问页面时,文本不想填充任何文本表单和文本区域。因此,当我重新加载页面时,我的文本形式突然消失了。但是,当我向我的管理员PHP检查时,SQL中的换行符也成功保存了文本。当我在没有换行的情况下写作时,这个问题就不会出现了。
这是处理保存和读取数据库的PHP代码。
$judul = $_POST['inputEditJudul'];
$jenis = $_POST['inputEditJenis'];
$isiArt = $_POST['inputEditIsi'];
date_default_timezone_set('Indonesia/Jakarta');
$tanggal = date('Y-m-d');
if(isset($_POST['btn_Save'])) {
$sql = "UPDATE artikel
SET judul='".$judul."', jenis_artikel='".$jenis."', isi_artikel='".$isiArt."', tanggal= CAST('".$tanggal."'AS DATE)
WHERE id=".$_GET['id'].";";
mysql_query($sql,$link);
}
$sql = "SELECT * FROM artikel WHERE id=".$_GET['id'].";";
$result = mysql_query($sql, $link);
$row = mysql_fetch_array($result);
这是处理在同一页面中填写表单的jquery脚本。
<script>
$(document).ready(function(){
$("#inputEditJudul").val("<?php echo ($row['judul']) ?>");
$("#inputEditIsi").val("<?php echo nl2br($row['isi_artikel']) ?>");
var jenisArt = <?php echo $row['jenis_artikel'] ?>;
if ( jenisArt == 1){
$("#inputEditJenis").val("1");
} else {
$("#inputEditJenis").val("2");
};
});
</script>
这是我表单中的文本区域
....
<div class="form-group">
<label for="inputEditIsi">Isi Artikel</label>
<textarea class="form-control" id="inputEditIsi" name="inputEditIsi" rows="10" maxlength="800"></textarea>
</div>
....
如果可能,请使用PHP/Jquery。我对ajax一无所知
抱歉我英语不好。我在这里还是个新手。
感谢
问题是JavaScript不"喜欢"换行。
var foo = "hello world";
可以正常工作,但是
var foo = "hello
world";
不会,你会在开发者控制台中得到一个错误,比如
未捕获的SyntaxError:意外的令牌非法
nl2br
将添加正确的<br>
,但保留换行符,因此您的JavaScript无效。
由于您现在没有使用AJAX,将内容直接写入文本区域有什么问题?
<textarea class="form-control" id="inputEditIsi" name="inputEditIsi" rows="10" maxlength="800">
<?php echo $row['isi_artikel']; ?></textarea>
如果由于某种原因不能,请查看有关从字符串中删除换行符的其他问题。有了这样的解决方案,您的JavaScript应该再次有效。