zoukankan      html  css  js  c++  java
  • 关于ajax提交的公共接口的一大用处

    在项目框架搭建的时候,就写了ajax提交的公共接口,是想统一的日志和处理ajax返回的错误信息。

    今天,却又帮我解决了另外一个问题:每次点开某个页面,有一个ajax请求总是会调用两次,于是打开chrome调试器,在公共的ajax提交的地方打上断点,查看chrome的Call Stack,很容易就找到两次调用的源头所在,问题瞬间解决。

    贴一下我的util.js:

    /*!
     * 前端js公用方法插件
     * Copyright 2011-2015 zhangjh.
     * Licensed under MIT (https://github.com/firebata/skysport/blob/master/LICENSE)
     */
    (function ($) {
        "use strict";
        //扩展常用方法
        $.extend({
            sendRestFulAjax: sendRestFulAjax,//ajax
            sendJsonAjax:sendJsonAjax,
            strToJson: strToJson,//&连接字符串转json对象
            strIsEmpty: strIsEmpty,//判断字符串为空
            strIsNotEmpty: strIsNotEmpty//判断字符串不为空
    
        });
        /**
         *
         * @param _url 路径
         * @param _data 数据
         * @param _type HTTP方法
         * @param _dataType 数据类型
         * @param _doSuccess 成功回调函数
         */
        function sendRestFulAjax(_url, _data, _type, _dataType, _doSuccess) {
            var type = strIsEmpty(_type) ? 'POST' : _type;
            //var dataType = _type == "undefined" || $.trim(_dataType) == '' ? 'json' : _dataType;
            var sf = strIsEmpty(_doSuccess) ? doSucess : _doSuccess;
            $.ajax({
                url: _url,
                data: _data,
                type: type,
                //dataType: dataType,
                success: sf,
                error: doNotSucess
            });
        }
        /**
         *
         * @param _url 路径
         * @param _data 数据
         * @param _type HTTP方法
         * @param _dataType 数据类型
         * @param _doSuccess 成功回调函数
         */
        function sendJsonAjax(_url, _data,  _doSuccess) {
            var sf = strIsEmpty(_doSuccess) ? doSucess : _doSuccess;
            $.ajax({
                url: _url,
                data: JSON.stringify(_data),
                type: "POST",
                dataType: "json",
                contentType: "application/json",
                success: sf,
                error: doNotSucess
            });
        }
        /*bootbox.setLocale("zh_CN");*/
        var doNotSucess = function (XMLHttpRequest, textStatus, errorThrown) {
            //console.error(XMLHttpRequest);
            bootbox.alert("本次操作失败.");
        }
        var doSucess = function (XMLHttpRequest, textStatus, errorThrown) {
            //bootbox.alert(XMLHttpRequest);
        }
        /**
         * 将“&”连接的字符串转换成Json
         * @param str “&”连接的字符串
         * @returns {Object}  Json
         */
        function strToJson(str) {
            str = str.replace(/&/g, "','");
            str = str.replace(/=/g, "':'");
            str = "({'" + str + "'})";
            var obj = eval(str);
            return obj;
        }
    
        /**
         * 校验字符串为空
         * @param input 字符串
         * @returns {boolean}
         */
        function strIsEmpty(input) {
            return input == undefined || $.trim(input) == ''
        }
    
        /**
         * 校验字符串不为空
         * @param input 字符串
         * @returns {boolean}
         */
        function strIsNotEmpty(input) {
            return !strIsEmpty(input);
        }
    }(jQuery));
  • 相关阅读:
    git log中文乱码问题
    局域网映射公网IP
    Android Studio 的一些配置
    Android Studio的安装
    adb的安装
    python的安装
    CentOS 7 上部署 java web 项目
    SQL——SQL语句总结(8)
    SQL——SQL语句总结(7)
    SQL——SQL语句总结(6)
  • 原文地址:https://www.cnblogs.com/firebata/p/4680697.html
Copyright © 2011-2022 走看看