【发布时间】:2013-02-14 07:44:32
【问题描述】:
我正在开发一个应用程序,该应用程序涉及使用 javascript 从页面获取整个页面内容并将 html 转储到数据库。在页面上,我有各种组件将使用 ajax 请求进行解析和存储。我这样做。
function saveContent(){
var $getContent = $('#mainWrap').clone();
$getContent.find('.textBox, .pictureBox').removeAttr('id');
var saveContent = $getContent.wrap('<div></div>').html();
var getBodyStyle=$('body').attr('style');
var auto="auto";
$.ajax({
url:"save.php",
type:"POST",
dataType:"text",
data:"txtComp="+saveContent+"&auto="+auto+"&pageId="+pageId+"&webId="+webId+"&userId="+userId+"&bodyStyle="+getBodyStyle,
success:function(data){
var options = {"text":data,"layout":"topCenter","type":"success","animateOpen": {"opacity": "show"}};
setTimeout(function(){noty(options)}, 1000);
//$('#draftMsg').html(data).fadeIn(500);
}
});
}
现在我有了 facebook、twitter 等社交媒体组件。当我尝试保存 facebook 组件时,它并没有完全保存,因为它包含脚本中带有“&”的一些参数。
<div style="z-index: 1001; height: 560px; width: 413px; top: -20px; left: 121.5px;" id="com-IADDFSGNHLU7WNR3WM2KC3I8DA2DOIC6" class="facebookBox contentBox boxStyle">
<div class="blankDiv"></div>
<iframe class="facebookBoxObject" allowtransparency="true" style="border: medium none; overflow: hidden; height: 560px; width: 413px;" src="https://www.facebook.com/plugins/likebox.php?api_key=117096311791424&locale=en_US&height=560&header=true&show_faces=true&stream=true&width=413&href=http://www.facebook.com/cbil360" frameborder="0" scrolling="no">
</iframe>
</div>
以上是我要存储到数据库的内容,当我说console.log 时我得到它,但在数据库中它只存储以下内容
<div style="z-index: 1001; height: 388px; width: 283px; top: -20px; left: 120.5px;" id="com-IADDFSGNHLU7WNR3WM2KC3I8DA2DOIC6" class="facebookBox contentBox boxStyle">
<div class="blankDiv"></div><iframe class="facebookBoxObject" allowtransparency="true" style="border: medium none; overflow: hidden; height: 388px; width: 283px;" src="https://www.facebook.com/plugins/likebox.php?api_key=117096311791424
它在api_key 参数之后中断,因为它有 & 之后。我不确定我没有得到任何错误。尝试调试但尚未得出结论。
请纠正我哪里出错了。
更新:我使用的查询是
$query = "insert into tbl_revision (userId,revisionContent,webId,pageId,status,saveType,dateAdded) values ('".$_SESSION['UserId']."','$revisionContent','$webId','$pageId','$status','$saveType','$toDate')"
【问题讨论】:
-
你能发布你的 PHP 吗?我猜这与您的查询或执行查询的方法有关。
-
您不会转义 GET 参数。也许你应该。内容在 & 处终止的事实表明。
-
我已经用查询更新了问题。我认为查询是正确的,因为我可以保存其余的组件。数据库中的字段标记为
varchar,如果这可能会有所不同。 -
尝试更改 ajax 调用中的
data字段以使用 json 格式。例如:数据:{txtComp: saveContent, auto: auto, pageId: pageId} -
@JanDvorak by escape 你的意思是我需要做
mysql_real_escape_strings?
标签: php javascript jquery mysql