当我将变量传递给PHP脚本时,我首先检查它是否为isset
,不是空白,检查它是否为字符串并且长度大于1且小于255(数据库varchar字段限制)然后我通过它运行它:
$f_name= stripslashes(htmlentities($_POST["f_name"], ENT_QUOTES));
然后我使用PDO准备更新f_name
字段。当我拿到它把它放在页面上时我解码它:
html_entity_decode($row["f_name"], ENT_QUOTES);
将它在JSON数组中返回到启动fetch的AJAX调用,然后将其解析为输入字段。
如果f_name字段保存了撇号,那么一切都可以正常工作,并使用JavaScript将其放入输入字段。它只是切掉了撇号和其后的任何东西。我怎样才能阻止这种情况发生?
var response = "<input type='text' id='f_name' value='"+rdata.patient[0].f_name+"' onkeydown='onedit(1)' maxlength='255' />";
答案 0 :(得分:0)
value='"+rdata.patient[0].f_name+"'
您正在使用'
个字符来分隔每个属性的值。如果数据中有'
个字符,则它将结束属性值。您需要将其表示为'
。
更好(更安全,更易读)的方法是使用标准DOM生成HTML而不是一起粉碎字符串。
var input = document.createElement("input");
input.id = "f_name";
input.value = rdata.patient[0].f_name;
input.addEventListener("keydown", function () { onedit(1); });
input.maxlength = 255;