day28
请假,喜获两个bug
day29
BUG1
修改密码出现%会转义(具体参考day27)
方法1:
ajax中post的escape对有些特殊字符无法转换,例如:+ % &号,因此需要对其进行转义。
如果不然,Http传输就会丢失这个字符,这个时候必须将“+”手动转成 “%2B”,同时需要手动转的字符还有“&”->“%26”,“%”->“%25”等。
if (password != null && password != "")
{
password=password.replace(/\+/g, "%2B");
password=password.replace(/&/g, "%26");
}
if (username != null && username != "")
{
username=username.replace(/\+/g, "%2B");
username=username.replace(/\&/g, "%26");
}
注:+ 是正则表达式的元字符,需要用 \ 转义;& 可以不用转义。
或者对特殊字符串进行转码
encodeURIComponent(yj)
方法2
使用Ajax传送数据时,当数据中存在加号(+)、连接符(&)或者百分号(%)时,服务器端接收数据时会丢失数据。
分析Ajax传送数据的格式与Javascript的语法:
1. "+"号:JavaScript解析为字符串连接符,所以服务器端接收数据时"+"会丢失变空格。
2. "&"号:JavaScript解析为变量连接符,所以服务器端接收数据时&符号以后的数据都会丢失变空格。
解决方法是通过正则表达式进行编码替换(假设postStr是你想通过ajax传送的数据字符串)
postStr = postStr.replace(/%/g, "%25");
postStr = postStr.replace(/\&/g, "%26");
postStr = postStr.replace(/\+/g, "%2B");
破案:龙哥牛逼~
破案代码如下:
var old = inputForm.find("#oldPassword").val()
var newpsw = inputForm.find("#newPassword").val()
// var newpsw2 = newpsw.replace(/%/g, “%25”);
fetch("${ctx}/sys/user/savePwd",{
method:‘post’,
body:JSON.stringify({
oldPassword:old,
newPassword:newpsw
}),
headers: new Headers({
‘Content-Type’: ‘application/json’
})
}).then(res=>res.json()).then(res=>{
console.log(‘密码修改成功:’,res)
jp.success(‘密码修改成功’);
jp.close(index);//关闭dialog
})
相关资料
BUG2
点击出现空白页面并报错Uncaught SyntaxError: missing ) after argument list
解决方案
这个错误就是你的js写的" "有问题。拼接的字符串的方式错误
方法1
html2 = html2 + “加入购物车”;
正解:相应位置加上转义字符"代表是双引号,如果传入一个参数
html2 = html2 + “加入购物车”;
方法2
cont.html(’
’);
改为
cont.html(’<p class=“subSecName” οnclick=“toSection(’+ssid+’);”>’);试试
方法3
onclick方法的地方出错了
出错的原内容是
播放
更正后, 传参时加引号即可
播放
方法4
.$(’#menus’).append("
- " + value.ImageName + “
- ”);
主要是双引号和单引号的嵌套使用
测试一、测试解决方案时,试着在value.ImageUrl处添加单引号(如下)
$(’#menus’).append(" - <a href=‘javascript:void(0)’ οnclick=‘showCompareImage(’" + value.ImageUrl + “’)’>” + value.ImageName + “
- ”);
结果出现“unexpected }”的错误
测试二、将最外面的双引号和内部的单引号,全部互换,如下
$(’#menus’).append(’ - <a href=“javascript:void(0)” οnclick=“showCompareImage(”’ + value.ImageUrl + ‘)">’ + value.ImageName + ‘
- ’);
发现错误任然存在。
查找解决方案后,使用转义符将双引号进行转义,解决问题,最终代码如下:
$(’#menus’).append(" - " + value.ImageName + “
- ”);
破案,就是数据问题,有一条数据多了一个’号。痛苦啊