Discuz教程网

jQuery ajax 路由和过滤器使用说明

[复制链接]
authicon dly 发表于 2011-9-14 08:32:57 | 显示全部楼层 |阅读模式
遗憾的是,我用到的一个遗留系统并没有做到这样。于是在客户端应用jQuery的ajaxPrefilter改造了一下调用方法。
  1. <html>
  2. <head>
  3. <title>ajaxPrefilter demo</title>
  4. </head>
  5. <body>
  6. <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
  7. <script type="text/javascript">
  8. var zoneAjaxUrl = '/ajax.php';
  9. var zoneAjaxRoute = /\/ajax\/(\w+)\/(\w+)\/(\w+)(\?.*)?/;
  10. $.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
  11. // console.log(options.url,'\n',originalOptions.url);
  12. var m = options.url.match(zoneAjaxRoute)
  13. if(m){
  14. var routed = {
  15. dir : m[1], page : m[2], action : m[3],
  16. args : JSON.stringify(originalOptions.data)
  17. }
  18. options.url = zoneAjaxUrl+ (m[4]||'');
  19. options.data = $.param(routed);
  20. }
  21. });
  22. var url = '/ajax/dir/page/action';
  23. // var url = '/ajax/dir/page/action?a=1&b=2';
  24. var url_jsonp = '/ajax/dir/page/action?callback=?';
  25. // var url_jsonp = '/ajax/dir/page/action?a1=2&b1=3&diy_callback=?';
  26. var data = {
  27. username: "abc@example.com",
  28. users : ['a','b']
  29. }
  30. $.post(url,data);
  31. $.get(url,data);
  32. $.getJSON(url_jsonp,data);
  33. </script>
  34. </body>
  35. </html>
复制代码

使用比对
  1. // 改造之后
  2. $.post('/ajax/dir/page/action',{page:1})
  3. // 改造之前
  4. $.post('/ajax.php',{
  5. dir : 'dir',
  6. page : 'page',
  7. action : 'action',
  8. args : JSON.stringify({ page:1 })
  9. });
复制代码



上一篇:jQuery动态添加的元素绑定事件处理函数代码
下一篇:js禁止小键盘输入数字功能代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 04:59

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表