web前台技术学习总结(2)-用jQuery自定义的请求JSON方法

jQuery库中的ajax工具很优秀,也很实用,除了方便的预设方法,还可以通过自 定义来满足自己的要求.

比如,自带$.getJSON方法能够很简洁快速的进行ajax的JSON请求:

$.getJSON("/getjsonresponse", {param1:value1},function(data){
  //请求成功时的操作
});

但是,如果想要定义请求错误时的操作,或者修改其他ajax请求的参数,这个工 具就不适用了.因此,根据需要,可以用$.ajax方法(这个方法是 jquery最基础的 ajax请求工具,其他预设工具都是从此"继承"来的)来定义一个 $.reqJSON方法.其主要思想是:把最需要自定义的参数直接放在函数的参数 (arguments)里,其他参数可以通过最后一个参数params来覆盖.

jQuery.reqJSON = function(url, data, success, error,  params) {
  var CallParams = {};
  CallParams.type = "POST";
  CallParams.url = rnd ? url + '?r=' + new Date() * 1 :  url;
  CallParams.processData = true;
  CallParams.data = data;
  CallParams.dataType = "json";
  CallParams.success = success;
  CallParams.error = error || xm_ajax_error;
  if (params) {
    $.extend(CallParams, params);
  }
  $.ajax(CallParams);
}

相关参数的说明

url - string,请求地址;

data - object,string,待传给后台的参数

success - function,请求成功时的回调函数

error - function,请求失败时的回调函数

params - object,用于扩展或覆盖所有预设的(包括jquery本身预设)的 javascript 对象

这个方法可以像$.getJSON一样来使用

$.reqJSON('/getjsonresponse',{param1:value1},function(data) {
  //请求成功时的操作
});

如果想定义error时候的回调函数可以在参数的error位置进行.由于需要,在 reqJSON内部定义了一个默认的显示错误的方法 xm_ajax_error,可以被参数中 error覆盖.为了使便于说明,假设url,sentdata,success都是定义好的变量.

$.reqJSON(url,sentdata,success,function(xhr,ts,err){
  //请求错误时的操作
  alert(xhr.responseText );
});

要是想扩展其他参数,可以使用最后一个参数params,比如改成不缓存,GET请 求

$.reqJSON(url,sentdata,success,error,{
  cache:false,
  type:'GET'
});

这些参数可以参考http://docs.jquery.com/Ajax/jQuery.ajax#options

应超级奶崽 和 Richet 的要求,写了一个简单的demo,用reqJSON方法进行 jsonp请求,获取跨域的ajax结果.demo中用了google的ajax search API.

本文配套源码

时间: 2024-08-02 18:49:47

web前台技术学习总结(2)-用jQuery自定义的请求JSON方法的相关文章

web前台技术学习总结(3)-轻便型全站javascript部署

问题的提出 一年前刚开始做项目的时候,我对于前台技术还刚刚入门 ,用jquery写点小打小闹的交互效果还是没太大问题,但是要把所有这些效果干净 ,整洁的部署到全站,对我来说就有点头疼了.由于网站页面虽说不是特别多,但也 有二三十个,如果每个页面写一个单独的js文件或者直接把js写在页面内,是不利 于维护和有损前台性能的.按照yahoo的前台性能提升建议,应该尽量减少js文件 个数.于是我决定想办法把除了 jquery库及一些插件之外自写代码全部写到一个 文件之中.虽然可能有时候某些页面载入的js

web前台技术学习总结(1)-CSS实现全浏览器兼容的ellipsis

参加项目已经有一段时间了,笔者在web标准设计方面的学习有了不少进步.之 前学习和实践都是边Google边看书进行的,只输入没输出,也很少和大家进行交流 .项目已经接近尾声,有必要进行总结,把自己学到的悟到的在博客园与大家分享 交流,同时温故知新,希望在此过程中学到更多的东西.于是,就有了本系列文 章. 最开始来一个比较容易说的清楚的吧. 截取固定长度字符有很多实现方法:一是让后台直接截好后写到前台,二是当 DOM加载完后用JS截取,第三就是用CSS来进行.第一个方法对于前台来说不用做什 么操作

jQuery取消ajax请求的方法

 本文实例讲述了jQuery取消ajax请求的方法.分享给大家供大家参考.具体分析如下: 这里需要注意的是,在ajax请求未响应之前可以用xhr.abort()取消,但如果请求已经到达了服务器端,这样做的结果仅仅是让浏览器不再监听这个请求的响应,但服务器端仍然会进行处理 1 2 3 4 5 6 7 8 9 10 11 var xhr = $.ajax({ type: "POST", url: "test.php", data: "name=test&quo

jQuery取消ajax请求的方法_jquery

本文实例讲述了jQuery取消ajax请求的方法.分享给大家供大家参考.具体分析如下: 这里需要注意的是,在ajax请求未响应之前可以用xhr.abort()取消,但如果请求已经到达了服务器端,这样做的结果仅仅是让浏览器不再监听这个请求的响应,但服务器端仍然会进行处理 var xhr = $.ajax({ type: "POST", url: "test.php", data: "name=test", success: function(msg

jquery中AJAX请求 $.post方法的使用_AJAX相关

使用jQuery的$.post方法可以以POST形式向服务器发起AJAX请求.$.post方法是jQuery的实用工具方法. post和get发送方式的特点, GET 方法提交数据不安全,数据置于请求行,客户端地址栏可见; GET 方法提交的数据大小限制在255 个字符之内.POST方法提交的数据置于消息主体内,客户端不可见, POST 方法提交的数据大小没有限制. $.post方法语法 $.post(url,parameters,callback) 参数   url (字符串)服务器端资源地址

jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路_jquery

       jQuery是时下比较流行的一个js库,能够用简单的代码做出理想的效果,就像官网上说的那样"write less ,do more".Jquery在一定程度上改写了以往对JavaScript的写法,本人就用jquery实现上篇中用ajax实现异步通信的效果,感受一下jquery的魅力.      首先你需要下载jquery的最新的js文件,并将其引入到文件中,你也可以在此下载:点我下载.      这次通信用的是jquery的jQuery.post(url,[data],

JQuery 自定义CircleAnimation,Animate方法学习笔记_jquery

在此贴出一些学习成果,希望能对学习JQuery的其他同学有所帮助,同时也记录下自己的学习情况. 看了一些JQuery的官方教程,已经有点心潮澎湃了,就决定自己尝试着写一些东西出来.我看到了很多很绚的动画效果,然后决定自己也尝试一下,我决定要写一个圆周运动的动画效果,下面贴出js代码 复制代码 代码如下: var CircleAnimation = function (center_left, center_top, id, clockwise, duration) { return new Ci

jquery自定义函数的多种方法

 在jquery中自定义函数你会吗?今天抽时间写了几个,个人感觉还不错,喜欢的朋友可以了解下 代码如下: //方法定义  $.windowbox = {  //定义一个方法aa  aa: function(){  alert("aa");  },      //定义一个方法bb  bb: function(){  alert("bb");  }  }  $.windowbox.aa(); //调用$.windowbox里的aa方法    代码如下: // 传参数 

jquery中AJAX请求 $.post方法的使用

使用jQuery的$.post方法可以以POST形式向服务器发起AJAX请求.$.post方法是jQuery的实用工具方法. post和get发送方式的特点, GET 方法提交数据不安全,数据置于请求行,客户端地址栏可见; GET 方法提交的数据大小限制在255 个字符之内.POST方法提交的数据置于消息主体内,客户端不可见, POST 方法提交的数据大小没有限制. $.post方法语法 $.post(url,parameters,callback) 参数 url (字符串)服务器端资源地址.