在项目框架搭建的时候,就写了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));

关于ajax提交的公共接口的一大用处的更多相关文章

  1. 判断手机端用户打开页面时是android还是ios,并将判断结果通过ajax返回给url接口,传递回去

    首先判断页面是android还是ios,然后利用ajax将结果通过接口url返回回去,记录到log日志中,以统计android和ios用户访问该页面的数量(数据统计) <script type= ...

  2. Django之Ajax提交

    Ajax 提交数据,页面不刷新 Ajax要引入jQuery Django之Ajax提交 Js实现页面的跳转: location.href = "/url/" $ajax({ url ...

  3. Vue-CLI项目-axios模块前后端交互(类似ajax提交)

    08.31自我总结 Vue-CLI项目-axios前后端交互 一.模块的安装 npm install axios --save #--save可以不用写 二.配置main.js import axio ...

  4. javascript表单的Ajax 提交插件的使用

    Ajax 提交插件 form.js 表单的下载地址:官方网站:http://malsup.com/jquery/form/ form.js 插件有两个核心方法:ajaxForm()和ajaxSubmi ...

  5. Ajax 提交KindEditor的数据

    这次我是在EasyUI中使用了KindEditor的编辑器,按照官方给的代码,总是无法获取编辑器里面的值(内容),如下:         KindEditor.ready(function (K) { ...

  6. jquery实现ajax提交表单信息

    最近在思考优化项目,想自己扩展一个jquery自动获取表单中的数据进行ajax提交.本人没有完整性学习jquery,基本上是现学现找,有点困难. 主要是扩展和拼接json转对象 很简单,附上代码: ; ...

  7. ajax提交form表单

    1. ajax提交form表单和不同的form表单的提交主要区别在于,ajax提交表单是异步提交的,而普通的是同步提交的表单. 2. from视图部分 <form id="loginF ...

  8. 【ajax 提交表单】多种方式的注意事项

    在业务中,可能因为表单内容过于庞大,字段过于繁杂,如果人为去拼接的话 ,需要耗费大量的时间和精力,与此同时,代码看上去也是冗余不堪. 所以,提交表单的时候如果能整个表单数据整体提交,那是非常开心的事情 ...

  9. Ajax提交参数的值中带有html标签不能提交成功的解决办法(ASP.NET)

    最近在公司做资源及文章上传功能遇到一个小问题,被坑了好半天. 该功能就类似利用富文本编辑器发布信息,但是用Ajax提交数据,因此提交参数值中不可避免的含有html标签. 在本地运行代码一直没问题,总是 ...

随机推荐

  1. POJ 2289 Jamie's Contact Groups (二分+最大流)

    题目大意: 有n个人,可以分成m个组,现在给出你每个人可以去的组的编号,求分成的m组中人数最多的组最少可以有多少人. 算法讨论: 首先喷一下这题的输入,太恶心了. 然后说算法:最多的最少,二分的字眼. ...

  2. Gengxin讲STL系列——Set

    本系列第二篇blog 第一篇写的心潮澎湃,结果写完一看,这都是些什么玩意= =| Set的中文名称是“集合”.集合,高一数学必修一课本给出的定义已经很明确了,简单来讲就是一个不含重复元素的空间(个人定 ...

  3. ORACLE11G常用函数

    1 单值函数 1.1 日期函数 1.1.1 Round [舍入到最接近的日期](day:舍入到最接近的星期日) select sysdate S1, round(sysdate) S2 , round ...

  4. Javascript经典实例 - 字符串

    1] 'this is a string'这是字符串直接量,new String('this is a string')这是字符串对象,字符串对象可以用字符串对象所带的属性和方法,直接量在“表面上”也 ...

  5. 淘管 ERP项目与淘宝对接中产生的若干问题及处理办法

    现象:ERP绑定淘宝后,下载商品数据时如果成功,ajax不断尝试重发. 原因:  /app/taoapi/lib/top/TopClient.php 中的curl()方法成功后,返回空值,而前端收到空 ...

  6. mysql之主从复制

    原理--> 在数据库层面,复制语句或者行,因为在数据库层面,故只有主服务器生成,并放到二进制日志里面,才能复制给从服务器. 原理--> mysql的主从复制基于异步,主要有三个进程执行,分 ...

  7. Js验证 :只能输入数字和小数点 验证是否是数字 js取float型小数点后两位

    JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'') ...

  8. Qt的十六进制的控件

    Qt没有这样的Widget,自己写一个吧.我曾经用MFC写过一个,代码不多,不到2000行,估计用Qt写不到1000行就够了. 可以参考这个qhexedit2 - QHexEdit is a Bina ...

  9. jQuery中的选择器《思维导图》

    学习jQuery的课程中,我对jQuery中的选择器有了更深的认识,它的简洁写法,完美的兼容性,可靠的处理机制,都让我们省了很多事, 下面是我在学习过程中对jQuery选择器写的思维导图(全屏查看:& ...

  10. linux usb 驱动详解

    linux usb 驱动详解 USB 设备驱动代码通过urb和所有的 USB 设备通讯.urb用 struct urb 结构描述(include/linux/usb.h ). urb 以一种异步的方式 ...