遗憾的是,我用到的一个遗留系统并没有做到这样。于是在客户端应用jQuery的ajaxPrefilter改造了一下调用方法。 复制代码 代码如下: <html> <head> <title>ajaxPrefilter demo</title> </head> <body> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> <script type="text/javascript"> var zoneAjaxUrl = '/ajax.php'; var zoneAjaxRoute = //ajax/(w+)/(w+)/(w+)(?.*)?/; $.ajaxPrefilter(function( options, originalOptions, jqXHR ) { // console.log(options.url,'n',originalOptions.url); var m = options.url.match(zoneAjaxRoute) if(m){ var routed = { dir : m[1], page : m[2], action : m[3], args : JSON.stringify(originalOptions.data) } options.url = zoneAjaxUrl+ (m[4]||''); options.data = $.param(routed); } }); var url = '/ajax/dir/page/action'; // var url = '/ajax/dir/page/action?a=1&b=2'; var url_jsonp = '/ajax/dir/page/action?callback=?'; // var url_jsonp = '/ajax/dir/page/action?a1=2&b1=3&diy_callback=?'; var data = { username: "abc@example.com", users : ['a','b'] } $.post(url,data); $.get(url,data); $.getJSON(url_jsonp,data); </script> </body> </html> 使用比对 复制代码 代码如下: // 改造之后 $.post('/ajax/dir/page/action',{page:1}) // 改造之前 $.post('/ajax.php',{ dir : 'dir', page : 'page', action : 'action', args : JSON.stringify({ page:1 }) });
推荐阅读
读jQuery之十一 添加事件核心方法
这篇看看其源码,这个add定义如下(省略大部分) 复制代码 代码如下: add: function( elem, types, handler, data ) { if ( elem.nodeType === 3 || elem.nodeType === 8 ) { return; } ... } 定义了四个参数elem>>>详细阅读
本文标题:jQuery ajax 路由和过滤器使用说明
地址:http://www.17bianji.com/kaifa2/JS/24352.html
1/2 1