遗憾的是,我用到的一个遗留系统并没有做到这样。于是在客户端应用jQuery的ajaxPrefilter改造了一下调用方法。 复制代码 代码如下: ajaxPrefilter demo <BR>var zoneAjaxUrl = '/ajax.php'; <BR>var zoneAjaxRoute = /\/ajax\/(\w+)\/(\w+)\/(\w+)(\?.*)?/; <BR>$.ajaxPrefilter(function( options, originalOptions, jqXHR ) { <BR>// console.log(options.url,'\n',originalOptions.url); <BR>var m = options.url.match(zoneAjaxRoute) <BR>if(m){ <BR>var routed = { <BR>dir : m[1], page : m[2], action : m[3], <BR>args : JSON.stringify(originalOptions.data) <BR>} <BR>options.url = zoneAjaxUrl+ (m[4]||''); <BR>options.data = $.param(routed); <BR>} <BR>}); <BR>var url = '/ajax/dir/page/action'; <BR>// var url = '/ajax/dir/page/action?a=1&b=2'; <BR>var url_jsonp = '/ajax/dir/page/action?callback=?'; <BR>// var url_jsonp = '/ajax/dir/page/action?a1=2&b1=3&diy_callback=?'; <BR>var data = { <BR>username: "abc@example.com", <BR>users : ['a','b'] <BR>} <BR>$.post(url,data); <BR>$.get(url,data); <BR>$.getJSON(url_jsonp,data); <BR> 使用比对 复制代码 代码如下: // 改造之后 $.post('/ajax/dir/page/action',{page:1}) // 改造之前 $.post('/ajax.php',{ dir : 'dir', page : 'page', action : 'action', args : JSON.stringify({ page:1 }) });