我正在尝试动态添加存储在变量中的内容。但是,单引号会导致问题。
var dynamicelementcode = $("<div id='container'>" + data + "</div>");
dynamicelementcode.prependTo($('#wholecontainer')).hide().fadeIn(300).slideDown(1000);
如果数据变量包含单引号,则会破坏我的代码。我怎么解决这个问题?数据变量从服务器端PHP脚本获取其内容。
任何php / js / jquery解决方案赞赏
修改
PHP Code Serverside
$comment_body = "The boy's bicycle";
echo '{ "author": "'.$author.'", "message": "'.$comment_body.'","parentid": "'.$parent_id.'","currentid": "'.mysql_insert_id().'","timestored": "'.$timestampa.'" }';
Jquery Code,Clientside
var newrootcomment = $("<div class='comment'><div class='comment-holder'><div class='comment-body'>"+ data.message + "</div> <abbr class='timestamp' title=''>" + data.timestored + "</abbr><div class='aut'>" + data.author + "</div> <a href='#comment_form' class='reply' id='id"+ data.currentid + "'>Reply</a> </div> </div>");
newrootcomment.prependTo($('#wholecontainer')).hide().fadeIn(300).slideDown(1000);
答案 0 :(得分:1)
var dynamicelementcode = $('<div id="container">').text(data)
jQuery text function会为您自动转义引号。
UPD。只撤消单引号:
var dynamicelementcode = $('<div id="container">').html(data.replace(/'/g,'''))
UPD 2。如果您查看页面来源,您会看到类似"message": 'The boy's bicycle'
的内容 - 这是语法错误。
这是将PHP数据传递给JavaScript的更好方法,也可以使用引号:
$comment_body = "The boy's bicycle";
echo json_encode(array(
'author' => $author,
'message' => $comment_body,
'parentid' => $parent_id,
'currentid' => mysql_insert_id(),
'timestamp' => $timestamp
));
答案 1 :(得分:1)
jQuery已经有了插入文本的方法,你不需要连接字符串或者自己去逃避。使用.text()
方法:
var dynamicelementcode = $('<div id="container"></div>').text(data);