今天费了九牛二虎之力才解决的问题

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!大功告成!

你可能感兴趣的:(今天费了九牛二虎之力才解决的问题)