1. 在查看一个去渠道的回调链接时,查看页面显示
http://.../postback?cid=${cid}&payout={PAYOUT}¤cy=USD...
真正的内容是 :
http://.../postback?cid=${cid}&payout={PAYOUT}¤cy=USD...
第一步就看到了 http://blog.csdn.net/sdcxyz/article/details/38266097
提示的特殊字符的url转码。
但是一直找不出来哪里发生了url转码。
2. 尝试了修改 ajax 的postdata,使其使用 encodeURI()
data : encodeURI('request=' + postdata),
但是还是没有效果。
3. 在渠道编辑页面显示内容没有问题。 同时查看页面获取到的ajax回复里内容也没有问题,并且alert出来的没有问题。
怀疑是bootstrap显示的问题。
于是修改class,label等但是没有效果
4. 尝试修改编辑页面的input到label,看到出现同样的问题。
但是结合#3的内容,不是简单的标签问题。
最后定位到ajax回调函数的不同。
label的填充数据的方法是element.html(item.value);
input的填充数据的方法是element.val(item.value);
难道就是因为这个?
5. 打开了w3c,测试html和val方法,果然如此!!
修改代码使用text方法去更新文本数据,OK!显示正常!!
说明html方法设计到了url转码啊!
6. 最后使用的是 :
if(item.value!=null && item.value.indexOf("¤") >= 0) //n_dcp is null and cause indexOf() throw exception and stop execution
ele.text(item.value);
原来一直使用 item.value.indexOf("¤") >= 0,结果发现火狐怎么都报错 item.value is null ,chrome则说没有indexOf这个属性。
绕了半天才反应过来有的字段的值是null啊。查看response,果然n_dcp是null啊。没写try catch的js代码就是在给自己挖坑啊!
最后加上判断不是null才执行后面的indexOf函数,然后执行 ele.text(item.value);
OK!大功告成!