可以借鉴的js写法

//定义当前页面的对象
var scrap = {
    //定义当前列表加载页面的tableId
    _table : "#ckTable" ,
    //查询form的Id
    _fromSearch  : "#scrapSearchForm" ,
    //获取数据的url
    _UrlGridData: "*.do?actionMethod=*",
    //提交
    _UrlApprove:"*.do?actionMethod=*",
    //提交
    //dataType
    _dataType:"json",
    //设置get属性的方法
    getTable : function(){
        return $(this._table);
    },
    getScrapSearch : function(){
        return $(this._fromSearch);
    },
    //初始化函数
    init: function (){
        this.initGrid();
    },
    initGrid : function (){
        var self=this;
        this.getTable().jqGrid({
            url :self._UrlGridData,
            datatype :self._dataType,
            mtype:"POST",
            //height  : window.screen.availHeight/2,
            height  : 'auto',
            width : window.screen.availWidth-241,
            colNames : ['''],
            colModel : [
                        {name : 'sid',index : 'sid',align:'center',editable : false, hidden:true},
                        {name : 'pickingCode',index : 'pickingCode',align:'center',editable : false},
                        {name : 'hospitalName',index : 'hospitalName',align:'center',editable : false},                          
                        {name : 'deptName',index : 'deptName',align:'center',editable : false},
                        {name : 'orgName',index : 'orgName',align:'center',editable : false},
                        {name : 'status',index : 'status',align:'center',editable : false,formatter:self.statusFmatter},
                        {name : 'createDate',index : 'createDate',align:'center',editable : false},
                        {name : 'oper',sortable:false,index : 'oper',align:'center',editable : false,
                            formatter : function(value, options,rowObject) {
                                var strReturn = "<a href='#' id='" + rowObject.sid+ "'";
                                if(rowObject.status == 1){
                                    strReturn += " onClick='scrap.approve(this, 0)' title='审批'><span class=\"handle-icon shenpi_2\"></span></a>";
                                }
                                if(rowObject.status != 1){
                                    strReturn += " onClick='scrap.approve(this, 1)' title='查看详情'><span class=\"handle-icon chakanxiangqing\"></span></a>";
                                }
                                return strReturn;
                            },    
                        }
                        ],
            sortable:true,
            rowNum : 15,
            rowList : [ 15, 30, 45 ],
            viewrecords : true,
            jsonReader : {
                repeatitems : false,
                id : "mryProjectReportId"
            },
            prmNames : {
                page : "page", // 表示请求页码的参数名称  
                rows : "rows", // 表示请求行数的参数名称  
                sort : "sidx", // 表示用于排序的列名的参数名称  
                order : "sord", // 表示采用的排序方式的参数名称  
                search : "_search" // 表示是否是搜索请求的参数名称  
            },
            pager : "#gridPager",
            editurl : "operate",
            caption : "",
            hidegrid : true,
            hiddengrid : false,
            loadComplete : function(data) { //完成服务器请求后,回调函数
                if (data.records == 0) {
                    //如果没有记录,下一页,组后一页无法点击
                    $("#next_gridPager").addClass('ui-state-disabled').removeClass('ui-state-hover');
                    $("#last_gridPager").addClass('ui-state-disabled').removeClass('ui-state-hover');
                }
            }
        }).trigger("reloadGrid");
    },
    
    relaodGrid:function (){
        var self = this;
        this.getTable().setGridParam({
            url : self._UrlGridData,
            datatype : self._dataType,
            postData:self.getScrapSearch().serialize(),
            page:1
        }).trigger("reloadGrid");
    },
    
    statusFmatter:function(cellvalue, options, rowObject){
         return getCategory(cellvalue, 'pickingStatus');
    },
    
    queryfind:function(){
        var startDate = $("#startDate").val();
        var endDate = $("#endDate").val();
        if("" != startDate && "" != endDate && startDate > endDate){
            messiAlert("开始时间不能大于结束时间!");
            return false;
        }
        this.relaodGrid();
    },
    
    approve:function (obj, flag){
        var self=this;
        getData(self._UrlApprove+'&id='+obj.id+'&flag='+flag,'','workspace');
    }
};
$(function(){
    scrap.init();
})

<think>嗯,用户想了解Axios对象的标准写法和用法。首先,我需要回忆一下Axios的基本知识。Axios是一个基于Promise的HTTP客户端,用于浏览器和Node.js。用户可能是在Vue或React项目中需要封装请求,所以得给出通用的示例。 用户提供的引用内容里有关于二次封装和拦截器的部分,比如引用[1]提到封装示例,引用[2]说明Axios基于Promise和XHR。所以回答里应该包括基础写法、拦截器、文件上传和不同请求方法的示例。 首先,基础用法应该是创建实例,设置baseURL和超时时间。然后,拦截器分为请求和响应两种,请求拦截器可以加token,响应拦截器处理错误。文件上传需要注意Content-Type为multipart/form-data,这部分在引用[2]里提到过,需要特别指出。 还要考虑不同HTTP方法的使用,比如GET、POST、PATCH、DELETE,用户提供的引用[3]中有示例,可以借鉴。比如PATCH和DELETE请求的参数传递方式。 用户可能遇到的问题包括配置项的正确设置,比如headers的处理,以及错误处理的方式。需要提醒常见的坑,比如文件上传时的格式,或者POST请求中data和params的区别。 另外,是否需要提供TypeScript的示例?引用[1]里提到TypeScript,所以可能用户希望有TS的写法。不过用户的问题没有明确,所以可以同时给出JS和TS的示例,或者在示例中注明类型。 最后,生成的相关问题要围绕Axios的深入使用,比如拦截器的高级应用、取消请求、并发处理等,这样能帮助用户进一步学习。</think>### Axios对象的标准写法及用法 Axios是一个基于Promise的HTTP客户端库,支持浏览器和Node.js环境。以下是其标准写法及关键用法: --- #### 一、基础Axios实例配置 ```typescript // 创建Axios实例 import axios from 'axios'; const instance = axios.create({ baseURL: 'https://api.example.com', // 统一的基础URL timeout: 5000, // 超时时间 headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' // 全局token设置 } }); ``` --- #### 二、拦截器配置(请求/响应) ```typescript // 请求拦截器 instance.interceptors.request.use( (config) => { // 动态添加token示例 const token = localStorage.getItem('token'); if (token) config.headers.Authorization = `Bearer ${token}`; return config; }, (error) => Promise.reject(error) ); // 响应拦截器 instance.interceptors.response.use( (response) => response.data, // 直接返回核心数据 (error) => { if (error.response?.status === 401) { // 处理未授权错误 localStorage.removeItem('token'); window.location.href = '/login'; } return Promise.reject(error); // 传递错误 } ); ``` --- #### 三、常见请求类型示例 1. **GET请求**(参数通过`params`传递): ```typescript instance.get('/users', { params: { page: 1, limit: 10 } // 自动转为URL参数 ?page=1&limit=10 }); ``` 2. **POST请求**(提交JSON数据): ```typescript instance.post('/users', { name: 'John', age: 30 }); ``` 3. **文件上传**(需设置`multipart/form-data`)[^2]: ```typescript const formData = new FormData(); formData.append('file', fileInput.files[0]); instance.post('/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' } }); ``` 4. **PATCH/DELETE请求**(引用示例中的用法[^3]): ```typescript // PATCH instance.patch('/user/p', { ids: [1,3,5,8] }); // DELETE instance.delete('/users/123'); ``` --- #### 四、高级配置项 ```typescript // 自定义请求配置 instance.request({ method: 'put', url: '/users/123', data: { name: 'Alice' }, onUploadProgress: (progressEvent) => { // 上传进度监听 const percent = Math.round((progressEvent.loaded * 100) / progressEvent.total); } }); ``` --- #### 关键注意事项 1. **全局配置**:通过`axios.defaults`设置默认值 2. **取消请求**:使用`CancelToken`或`AbortController` 3. **并发请求**:`axios.all()`配合`axios.spread()` 4. **TypeScript支持**:通过泛型定义响应数据类型: ```typescript interface UserData { id: number; name: string } instance.get<UserData>('/users/123').then(res => res.data.name); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值