为了保持我的代码整洁,我默认使用jQuery的每个表单元素。
。我的表单包含如下元素:
<input name="mobile" id="mobile" type="text" />
在我单独的javascript文件中,我从MySQL读取数据,然后使用jQuery设置它,在表单加载后。
$('#mobile').val('07845 887766');
这个值是从MySQL读取的,我在PHP中生成如下代码:
echo "'n $('#mobile').val('".$user['mobile']."');";
这工作得很好,但问题在于当有一个textarea字段…
<textarea name="notes" id="notes" ></textarea>
echo "'n $('#notes').html('TEST');";
这工作得很好,但是当我用数据库中的数据替换它时,它可以包含换行符,我得到一个javascript错误。
echo "'n $('#notes').html('".$user['notes']."');";
这会产生以下代码(实际值…)
$("#notes").html("INSERT INTO action (
inputdate,
)
VALUES ()");
给出一个错误。"未终止字符串"
可以是单引号而不是双引号,试试这个:
echo PHP_EOL.'$("#notes").html("'.$user['notes'].'");';
未终止字符串字面值
你得到这个消息是因为在Javascript中你不能跨多行文本字符串。
您需要做的是将$user['notes']
中的换行符替换为字符'r'n
,这样所有字符串都在一行上,然后<textarea>
输入将正确地在新行上显示每个项目。
让我们使用json_encode
来帮助我们转义Javascript不喜欢的讨厌的字符。
// This will convert to be Javascript friendly.
// Output string will be enclosed in quotes " "
$notes_str = json_encode($user['notes']);
echo "'n $('#notes').html(" . $notes_str . ");";
将行返回替换为'n,如下所示:
echo "'n $('#notes').html('".str_replace("'n","''n",$user['notes'])."');";
php不是我最擅长的,所以语法可能有点不合适。但是基本上用字符"'n"替换行返回。(我猜可能也需要处理/r,或者两者的组合)
编辑:显然,如果你使用PHP 5.2或更高版本,你可以使用json_encode(
,它将处理引号和换行符
如果你正在使用smarty模板引擎,你可以这样使用——
$('textarea#myTextAreaId').val({$arrVal.keyValue|@json_encode});