在项目框架搭建的时候,就写了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. 通过XSLT转换XML

    Hello,every body.又与大家见面了,哈哈.今天我与大家分享一下XSLT,XSL,XML,XPath.因为项目中有些功能用到了XSLT.XML等技术.所以今天好好研究了一下这几个方面的技术 ...

  2. struts1:(Struts)ActionForm类及表单数据验证

    在Struts的中央控制器中写了Struts的控制器角色,在这篇介绍下Struts的视图!Struts的视图组件:Struts框架中的视图组件主要包括:JSP页面.ActionForm类.Struts ...

  3. hdu 1587

    Problem Description As you know, Gardon trid hard for his love-letter, and now he's spending too muc ...

  4. x^2+y^2=N的整数解?

    本文系转载:http://blog.sina.com.cn/s/blog_a661ecd50101cv41.html 我们先研究这个问题的一部分:哪些素数是两平方数之和?为什么我们先研究素数,有个很重 ...

  5. stretchlim函数分析

    在看imadjust代码时,看到stretchlim函数,特此分析一下,代码注释如下 function lowhigh = stretchlim(varargin) %STRETCHLIM Find ...

  6. [Head First Python]4. pickle.dump pickle.load

    sketch.py #--*-- coding:utf-8 --*-- import pickle import nester man = [] other = [] try: data = open ...

  7. awk之7 常用函数的解析

    1.区域获取 substr(区域f,起始位置n1,获取范围n2) 解析:获取某个区域f内,从起始位置n1开始算起的n2个字符组成的字符串.如果n2不存在,则返回从n1开始到区域结束的内容. 例子:获取 ...

  8. 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE解决办法【转自wjr2012的csdn blog】

    点击下载Genymotion-ARM-Translation.zip 将你的虚拟器运行起来,将下载好的zip包用鼠标拖到虚拟机窗口中,出现确认对跨框点OK就行.然后重启你的虚拟机.

  9. X-factor Chains(POJ3421 素数)

    X-factor Chains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6212   Accepted: 1928 D ...

  10. Oracle Trunc

    http://www.cnblogs.com/xiaoyudz/archive/2011/03/18/1988467.html