进入合成页面,合成物品,已有数量不会减少。具体链接为:xxx.com/plugin.php id=wxpet:pet&index=compose&action=view&composeid=142
合成过程中仔细观察发现宠物币是会减少的,但是物品数量不减少,只有刷新后才会变化,这样的问题如何解决呢?
首先开httpfox,开始抓包,点击合成后停止抓包。
得到合成的链接是:xxx.com/plugin.php id=wxpet:pet&type=ajax&ajaxindex=compose&composeid=142&nums=1×tamp=1386061116880
通过上述链接,定位到文件是位于ajax下的compose.php。阅读源码,发现其中有个变量$text在xml中并未被引用。看其赋值发现,正是物品数量的变化。
定位到了问题所在就好。这个变量是如何调用的呢?我们返回合成界面,查看源码,观察调用的js,果然存在compose.js文件,跟入文件,发现第28行取出msg的数据,判定长度,如果长度大于0则利用循环处理数量的变化。这个js文件中,从28行到40行就是处理获取变量以及减少当前页面物品数量的部分,大概看了下ajax的说明,下面就把这段代码简要分析下。
var tmp=xmldoc.getElementsByTagName('msg')[0];
var msg=tmp.firstChild.nodeValue;
if(tmp.attributes.length>0){
var attrname,attrvalue,attrvalue2;
for (var i = 0; i<tmp.attributes.length;i++ ){
attrname=tmp.attributes[i].name;
attrname=attrname.substr(2);
attrvalue=tmp.attributes[i].value;
attrvalue2=$(attrname+'nums').value;
$(attrname).innerHTML=attrvalue2-attrvalue;
$(attrname+'nums').value=attrvalue2-attrvalue;
}
}
第一行,
var tmp=xmldoc.getElementsByTagName('msg')[0];
获取msg的元素节点。
第二行,是获取msg节点中第一个子节点的文本内容。
第三行开始就进入了tmp的循环,如果tmp元素节点的长度大于0,则说明有物品要减少,所以在后面分别取了其name属性来定位要减少的物品id,其value属性来确定要减少的数值。
根据这些推断,修改ajax下的compose.php代码
echo "<msg><![CDATA[{$msg}]]></msg>";
为:
echo "<msg {$text}><![CDATA[{$msg}]]></msg>";
保存文件后刷新合成页面,点击合成发现数量已经会自动变化了。至此,问题解决。
本节教程结束。
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。
留言