“和amp"API url中的字符没有保存到mysql数据库
"&" character from api url not saved to mysql database
我正在开发一个应用程序,该应用程序涉及使用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
参数之后中断,因为它有&在那之后。我不确定,因为我没有得到任何错误。试图调试,但还没有得出结论。请纠正我错在哪里。
Update:我使用的查询是
$query = "insert into tbl_revision (userId,revisionContent,webId,pageId,status,saveType,dateAdded) values ('".$_SESSION['UserId']."','$revisionContent','$webId','$pageId','$status','$saveType','$toDate')"
我真的怀疑这个问题是在数据到达后端之前发生的。它发生在前端,因为您在查询字符串中包含&
作为正常字符,这会导致一些混淆。我建议您要么URL编码您的saveContent
变量(URL编码而不是HTML编码)。
encodeURIComponent(saveContent) //that will replace the & with it's corresponding url encoding
还有另一种解决方法,您可以使用jquery $.ajax提供的json表单提交ajax请求字段。例如
$.ajax({
url:"save.php",
type:"POST",
dataType:"text",
data:{txtComp: saveContent, auto: auto }, //etc
success:function(data){
var options = {"text":data,"layout":"topCenter","type":"success","animateOpen": {"opacity": "show"}};
setTimeout(function(){noty(options)}, 1000);
//$('#draftMsg').html(data).fadeIn(500);
}
});
我还建议你看一下这个问题,了解URL编码和HTML编码的区别
Url编码与HTML编码的区别
您是否尝试对输入字符串进行编码并使用htmlentities和html_entity_decode解码输出字符串?
相关文章:
- 在JavaScript中输出转义字符
- 不同浏览器中的空白字符正则表达式行为
- 如何将getJson的响应保存在全局变量中
- Regex匹配除“”之外的所有字符;.js”;
- 按下按钮时保存cookie
- 如何使用 Angular JS 将数据保存在数据库中
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- HTML5在画布中加载较小的图像并保存实际大小的图像
- PDFKit:保存UTF8特殊字符
- 如何将文本字段('+<>$“)中的特殊字符保存到数据库中,然后使用 PHP 检索它们
- 防止图像保存到数据库而不是字符
- 如何向PHP函数发送一个长度超过200000个字符的base64字符串,以便保存图像
- Html5数据库保存'?!&等作为html5数据库中的特殊字符
- 如何保存/添加所有特殊字符,如(“&')ETC
- PHP/jQuery以提交/保存具有所有特殊字符值的输入
- 谷歌地图静态api url长度超过2048字符是否有任何解决方案?目的是保存为图像
- 字符编码- Javascript Blob对象保存为文件包含额外的字节
- “和amp"API url中的字符没有保存到mysql数据库
- 将字符串保存到变量和console.log时,拆分字符串会得到不同的结果