在项目框架搭建的时候,就写了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. BZOJ 2176 Strange String (最小表示法)

    题目大意: 与别的裸题的唯一不同点是其符号的ASCII码值在3 ~ 254 之间. 算法讨论: 最小表示法直接上.但是唯一不同的就是注意这里的字符范围,用char是会get wa的,所以要用unsig ...

  2. (原+转)使用opencv的DFT计算卷积

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5462665.html 参考网址: http://blog.csdn.net/lichengyu/art ...

  3. 第一章 Qt入门

    1.1Qt 窗口部件 widget,用户界面的一个可视化元素,任意窗口部件都可以作为窗口.可以通过简单的HTML修改丰富样式 1.2建立连接 Qt的窗口部件通过发射信号(signal)来表明一个用户动 ...

  4. iOS UIWebView 访问https 绕过证书验证的方法

    在文件开始实现  allowsAnyHTTPSCertificateForHost 方法 @implementation NSURLRequest (NSURLRequestWithIgnoreSSL ...

  5. java读取xml文件报“org.xml.sax.SAXParseException: Premature end of file” .

    背景:java读取xml文件,xml文件内容只有“<?xml version="1.0" encoding="UTF-8"?>”一行 java读取该 ...

  6. 为采集动态网页安装和测试Python Selenium库

    1. 引言上一篇<为编写网络爬虫程序安装Python3.5>中测试小例子对静态网页做了一个简单的采集程序,而动态网页因为需要动态加载js获取数据,所以使用urllib直接openurl已经 ...

  7. Ubuntu Codeblocks Installation

    Download and Installation sudo add-apt-repository ppa:damien-moore/codeblocks sudo apt update sudo a ...

  8. 转:linux运维工程师

    运维中关键技术点解剖:1 大量高并发网站的设计方案:2 高可靠.高可伸缩性网络架构设计:3 网站安全问题,如何避免被黑?4 南北互联问题,动态CDN解决方案:5 海量数据存储架构 一.什么是大型网站运 ...

  9. linux多线程编程之互斥锁

    多线程并行运行,共享同一种互斥资源时,需要上互斥锁来运行,主要是用到pthread_mutex_lock函数和pthread_mutex_unlock函数对线程进行上锁和解锁 下面是一个例子: #in ...

  10. 关于SQL SERVER 2008 R2发布订阅功能

    实现功能:主服务器维护数据的变更,从服务器需要时同步主服务器的数据. 配置:主从服务器均为SQL SERVER 2008 R2. 实现方法: 预备: 1.主从服务器需建立同一账户名及密码的账户(当时我 ...