如题,今天遇到一个jsonp的问题。和服务器有一个交互的过程,每次交互,都要从服务器去一段数据,并分析数据从而进行下一次的请求。同时这个服务器和当前php程序所在地服务器并非同源。
通过协商,服务器那边的返回结果格式如下
jQuery17105991549867037437_1353939516854(“<xml id=’111111111111111′>ksdfksd</xml>”);
jQuery17105991549867037437_1353939516854(“<xml id=’2222222222222222222′>ksdfksd</xml>”);
其中 jQuery17105991549867037437_1353939516854 是jQuery自动生成的回调函数名。
我在当前html页面的回调函数内设置在控制台输出接受到的参数。按照正常思维,输出应该是
<xml id=’111111111111111′>ksdfksd</xml>
<xml id=’2222222222222222222′>ksdfksd</xml>
但是实际输出的是<xml id=’2222222222222222222′>ksdfksd</xml>。只有第二个回调函数执行了。
但是,如果用原生的javascript插入script标签,则callback函数会执行两次。所以估计是jQuery封装所致,目前不知原因,网上亦没有搜到相关内容。所以我打算研究下jQuery源码,一探究竟。到时再补上原因。