ECShop transport.js定义了Ajax Transport
1 2 3 |
/* 定义两个别名 */ var Ajax = Transport; Ajax.call = Transport.run; |
其中run方法实现了类似jQuery $.ajax的功能但缺少了对jsonp方式的支持
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/* * * 调用此方法发送HTTP请求。 * * @public * @param {string} url 请求的URL地址 * @param {mix} params 发送参数 * @param {Function} callback 回调函数 * @param {string} ransferMode 请求的方式,有"GET"和"POST"两种 * @param {string} responseType 响应类型,有"JSON"、"XML"和"TEXT"三种 * @param {boolean} asyn 是否异步请求的方式 * @param {boolean} quiet 是否安静模式请求 */ run : function (url, params, callback, transferMode, responseType, asyn, quiet) |
可以在第一个get方法判断入口前新增下列代码:
1 2 3 4 5 6 7 8 9 10 |
if (transferMode === "GET") { if(params.indexOf("?") == -1){ if(params){ params+= "&"; } params += "callback=?"; } return $.getJSON(url, params, callback); } |
巧妙的将原来ajax get方法对接上jquery script jsonp实现
排除一些自制的特殊调用:比如callback的第二个参数以及this的深度使用
其它上层Ajax.call相关调用就不用一一更新了