`
shuaigg.babysky
  • 浏览: 554099 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

js ajax 函数

 
阅读更多

<script>

    var ajax = (function() {

 

        var parseParam = function(origin , target) {

            origin = origin || {};

            target = target || {};

            var obj = {};

            for(var key in origin) {

                if(target[key]) {

                    obj[key] = target[key];

                } else {

                    obj[key] = origin[key];

                }

            }

            return obj;

        };

 

        var getXhr = function() {

           var _xhr = false;

           try {

               _xhr = new XMLHttpRequest();

           } catch(ms) {

               try {

                   _xhr = new ActiveXObject("Msxml2.XMLHTTP");

               } catch(otherms) {

                   try {

                      _xhr = new ActiveXObject("MICROSOFT.XMLHTTP");    

                   } catch(failed) {

 

                   }

               }

           }

           return _xhr;         

        };

 

        var jsonToQuery = function(jsonObj) {

            var result = [];

            for(var key in jsonObj) {

                result.push(key + "=" + jsonObj[key]);

            }

            return result.join('&');

        };

 

        /*

         *      {

         *          url :

         *          args : 

         *          method : 

         *          complete : 

         *      } 

         */

        var funcEmpty = function() {};

        return function(opts) {

 

            opts = parseParam({

                type : "json",

                url : "",

                args : {},

                method : "get",

                complete : funcEmpty                

            } , opts);

 

            console.log(opts.url);

 

            var xhr = getXhr();

 

            var url = opts.url;

 

            var query = jsonToQuery(opts.args);

 

            var cback = function() {

 

                if(xhr.readyState === 4) {

                    if(opts.type === 'json') {

                        var obj = eval('(' + xhr.responseText + ')');

                        opts.complete(obj);

                    } else {

                        var result = xhr.responseXML;

                        opts.complete(result);

                    }

                }

            };

 

            xhr.onreadystatechange = cback;

 

 

            var setHeader = function() {

                try {

                    xhr.setRequestHeader('Content-Type' , 'application/x-www-form-urlencoded');

                    xhr.setRequestHeader('X-Requested-With' , 'XMLHttpRequest');

                } catch(e){

 

                }

            };

 

            if(opts.method === 'get') {

                url = url + (url.indexOf('?') == -1 ? '?' : "&") + query;

                xhr.open("get" , url , true);

                setHeader();

                xhr.send(null); 

            } else {

                xhr.open("post" , url , true);

                setHeader();

                xhr.send(query);

            }

        };

    })();

 

 

    ajax({

       url : "/php/test/ajax.php",

       method : "post",

       args : {

           a : 1,

           b : 2,

           c : 3

       },

       complete : function(json) {

          console.log(json);

       }

    });

 

 

</script>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics