遗憾的是,我用到的一个遗留系统并没有做到这样。于是在客户端应用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动态添加的元素绑定事件处理函数代码下一篇: js禁止小键盘输入数字功能代码
|