ajax前端怎么用,前端学习——JQuery Ajax使用心得

前端学习——JQuery Ajax使用经验

0.前言

在项目推进过程中经常使用Ajax,通过Jquery提供的函数可以非常方便的使用Ajax,但是在实际使用中也遇到一些问题,例如如何防止浏览器使用缓存,如何使用同步方式等。通过博文整理总结希望自身有所提高。

在这里通过一个加法例子说明问题.为了突出ajax,前端网页和后端PHP程序尽可能的简单。

【前端】——add.html

165732151.jpg

165732152.png

图1 add页面

【后端】——add.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可从服务器获得一个JSON数据包,请注意若使用JSON格式服务器HTTP首部中应包含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请求和响应】

165732153.jpg

165732154.png

图2 完整的HTTP请求和响应

2.防止浏览器使用缓存

浏览器为了加快运行速度,如果反复请求同一个URL,那么浏览器会使用缓存中的内容而不在向服务器重新请求。为了防止浏览器使用缓存,可以在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请求和响应】

165732155.jpg

165732156.png

图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请求和响应】

165732157.jpg

165732158.png

图4 完整的HTTP请求和响应

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值