0.前言
    在项目推进过程中常常使用Ajax,通过Jquery提供的函数能够很方便的使用Ajax,可是在实际使用中也遇到一些问题,比如怎样防止浏览器使用缓存,怎样使用同步方式等。通过博文整理总结希望自身有所提高。
    在这里通过一个加法样例说明问题.为了突出ajax,前端网页和后端PHP程序尽可能的简单。
    【前端】——add.html

图1 add页面

【后端】——add.php

<?php
// 返回JSON格式
header('Content-Type:application/json;charset=utf-8');
$result = array();
$result["result"] = $_GET["a"] + $_GET["b"];
echo json_encode($result, JSON_NUMERIC_CHECK);
?>

    【代码仓库】——test-jquery-ajax

代码仓库位于bitbucket使用Hg(而不是Git),Hg在windows或ubuntu上均有非常好用的GUI工具——TortoiseHg,本人愚笨没能熟练掌握Git。

    【TortoiseHg使用说明】——假设没有使用过Hg请參考博文hg clone部分操作就可以。   
    【JQuery 中文API

1.经常使用的getJSON
    在项目推进过程中使用的最多的便是getJSON,getJSON可从server获得一个JSON数据包,请注意若使用JSON格式serverHTTP首部中应包括application/json信息,否则会产生兼容性问题(简单说IE就可能出问题)。
    var submit_async = function() {
$.getJSON('add.php', {
a: $('input[name="a"]').val(),
b: $('input[name="b"]').val()
},
function(data) {
$('#result').text(data.result);
});
};

    【HTTP请求和响应】

图2 完整的HTTP请求和响应

2.防止浏览器使用缓存
    浏览器为了加快执行速度,假设重复请求同一个URL,那么浏览器会使用缓存中的内容而不在向server又一次请求。为了防止浏览器使用缓存,能够在URL之后添�一些变化的内容,最经常使用的方法便是添�当前时间的毫秒值,比如添�&now=<当前时间毫秒值>。(即使用这样的方法也存在一些“顽固派”,比如执行iOS6系统的safari浏览器)。
    var submit_async = function() {
$.getJSON('add.php', {
a: $('input[name="a"]').val(),
b: $('input[name="b"]').val(),
now: new Date().getTime() // 防止浏览器使用缓存
},
function(data) {
$('#result').text(data.result);
});
};

    【HTTP请求和响应】

图3 完整的HTTP请求和响应

3.使用同步方式
    getJSON方法并没有同步选项,假设使用同步方式可使用ajax原生方法。同步方式须要设置async选项为false。
    var submit_sync = function() {
$.ajax({
type: "get",
url: 'add.php',
async: false, // 使用同步方式
data: {
a: $('input[name="a"]').val(),
b: $('input[name="b"]').val(),
now: new Date().getTime() // 注意不要在此行添加�逗号
},
contentType: "application/json; charset=utf-8",
dataType: "json",
// cache: false,
success: function(data) {
$('#result').text(data.result);
} // 注意不要在此行添加�逗号
});
}
    【HTTP请求和响应】
    HTTP请求和响应同图3.

4.再议防止浏览器使用缓存
    在ajax方法中有一个cache选项,假设设置为cache:false意为禁止浏览器缓存。实现的方法和【2】很相似,该參数在URL之后添�&_=<当前时间毫秒值>
    var submit_sync = function() {
$.ajax({
type: "get",
url: 'add.php',
async: false, // 使用同步方式
data: {
a: $('input[name="a"]').val(),
b: $('input[name="b"]').val()
},
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
success: function(data) {
$('#result').text(data.result);
} // 注意不要在此行添加�逗号
});
}
    【HTTP请求和响应】

图4 完整的HTTP请求和响应

前端学习——JQuery Ajax使用经验的更多相关文章

  1. 前端学习——使用Ajax方式POST JSON数据包

    0.前言     本文解释怎样使用Jquery中的ajax方法传递JSON数据包,传递的方法使用POST(当然PUT又有时也是一个不错的选择).POST JSON数据包相比标准的POST格式可读性更好 ...

  2. 前端学习-jQuery

    老师博客:https://www.cnblogs.com/yuanchenqi/articles/6070667.html day43,day44 jquery 中文文档:http://jquery. ...

  3. 前端学习之- Ajax

    Ajax:页面不做刷新,直接将数据悄悄提交到后台,然后通过回调函数处理返回结果. $.Ajax({ # 提交到后台 url:'/host', # 提交到哪里 type:'POST' # 提交方式 da ...

  4. 前端学习——jquery操作例子

    一.jquery和DOM函数的转换 . jquery转换成dom $(] . dom转换成jquery var i1=documen.getElementById('#i1')---------> ...

  5. 前端学习☞jquery

    一 什么是jQuery对象? jQuery 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果一个对象是 jQuery 对象, 那么它就可以使用 j ...

  6. 让python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE等请求

    这两天在用python的bottle框架开发后台管理系统,接口约定使用RESTful风格请求,前端使用jquery ajax与接口进行交互,使用POST与GET请求时都正常,而Request Meth ...

  7. jQuery延迟加载(懒加载)插件 – jquery.lazyload.js-Web前端(W3Cways.com) - Web前端学习之路

    Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预 ...

  8. WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]

    WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...

  9. 前端技术Jquery与Ajax使用总结

    前端技术Jquery与Ajax使用总结 虽然主要是做的后端,但是由于有些时候也要写写前台的界面,因此也就学习了下Jquery和Ajax的一些知识,虽说此次写的这些对于前端大神来说有些班门弄斧的感觉,但 ...

随机推荐

  1. poj 3411 Paid Roads(dfs)

    Description A network of m roads connects N cities (numbered to N). There may be more than one road ...

  2. 总结FormsAuthentication的使用

    一.先看一下使用FormsAuthentication做登录认证的用法 用法一: FormsAuthentication.SetAuthCookie(username, isPersistent); ...

  3. Unity 扩展属性自定义绘制

    这么晚了准备睡觉的时候,去学习了一会. 发现一个标题好奇的点进去. 居然是自定义绘制属性.  在前几天这个问题把我难住了,没想到几分钟就能解决的问题. 我花了半天时间使用反射去解决...  如果我们想 ...

  4. IOS Xmpp的Iq发送和解析之请求讨论组成员

    #pragma mark - 获取讨论组成员 - (void)getDiscussionMemberInfoWithSendIq:(discussionModel *)data { NSXMLElem ...

  5. Back to Underworld(搜索)

    Back to Underworld Time Limit:4000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Su ...

  6. CF 338 D GCD Table(CRT)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 给定一个序列,a[1 ..k],问是否存在(i , ...

  7. npm创建和发布模块

    今天项目需要使用npm去创建一个模块,然后我查询了了npm的使用文档(Working with private modules),然后对其进行了整理. 一.在操作之前,我们首先要将npm装好,并且登录 ...

  8. PHP学习笔记九【数组二】

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/h ...

  9. mysql 时间戳按指定格式(Y-m-d)取出

    之前做采集脚本,把采集的时间按unix时间戳的形式取出    那么在写sql语句的时候,需要按时间查询相应的记录,页面传进来的$time 是'2014-01'之类的字符串,那么怎么写sql呢 $sql ...

  10. Hadoop配置文件-core-site.xml

     name value  Description   fs.default.name hdfs://hadoopmaster:9000 定义HadoopMaster的URI和端口  fs.checkp ...