在项目框架搭建的时候,就写了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. 从C到C++的升级

    C++的语言类型 C++是静态的强类型语言. 静态语言:数据类型在编译期间检查,因此在写程序时需要声明变量的类型 强类型语言:强调数据类型,不同的数据类型间的转换需要进行强制类型转换 C与C++的关系 ...

  2. VS2010无法断点调试解决办法

    今天我的VS2010忽然出现设置断点的时候,无法进行调试.现象:每次在设置断点调试的时候都会出现卡机,然后VS弹出如下图所示的状况: 解决办法: 依次点击:“工具-->扩展管理器”然后找到.Ne ...

  3. #pragma section

    看了别人使用了#pragma section来共享变量,今天试了下 如下添加代码 #define GLOBAL_SHARED __declspec(allocate(".Shared&quo ...

  4. Lucene学习总结之一:全文检索的基本原理

    一.总论 根据http://lucene.apache.org/java/docs/index.html 定义: Lucene 是一个高效的,基于Java 的全文检索库. 所以在了解Lucene之前要 ...

  5. apache和tomcat的区别

    Web服务器父与子 Apache和Tomcat区别 经常在用Apache和Tomcat等这些服务器时,你总感觉还是不清楚他们之间有什么关系.在用Tomcat的时候总出现Apache,总感到迷惑,到底谁 ...

  6. Qt的十六进制的控件

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

  7. C# 调用 Web Service

    Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是:通过SOAP ...

  8. 【温故而知新-万花筒】C# 异步编程 逆变 协变 委托 事件 事件参数 迭代 线程、多线程、线程池、后台线程

    额基本脱离了2.0 3.5的时代了.在.net 4.0+ 时代.一切都是辣么简单! 参考文档: http://www.cnblogs.com/linzheng/archive/2012/04/11/2 ...

  9. 学DSP(一):开始

    DSP有digital signal process 和 digital signal processor 2个意思,数字信号处理和数字信号处理器,我这里就是学数字信号处理器了. 我为什么要学DSP, ...

  10. Course Schedule 解答

    Question There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may ...