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

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可从服务器获得一个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请求和响应】

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

图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使用经验,布布扣,bubuko.com

时间: 2024-10-13 12:36:09

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

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

0.前言 本文解释如何使用Jquery中的ajax方法传递JSON数据包,传递的方法使用POST(当然PUT又有时也是一个不错的选择).POST JSON数据包相比标准的POST格式可读性更好些,层次结构也更清晰. 为了说明问题,前端和后端较为简单,重点突出AJAX的应用. [前端]--add-post-json.html 图1 add页面 [后端]--add-post-json.php <?php // 返回JSON格式 header('Content-Type:application/jso

前端学习---jquery

本部分主要记录jquery的  '选择器'  'dom操作'  'ajax': 1:'语法': jquery的基本语法:$(selector).action() $符号:定义jquery    selector:选择器,用于查找html元素   action() 方法:对元素的操作 如:$('p').hide():隐藏所有<p>标签 说明:文档加载就绪的函数 实际的项目中所有的jquery函数都位于 document ready 函数中:这是一个文档加载就绪的函数,为了防止文档在加载就绪 之前

前端笔记-jquery ajax提交表单

jquery ajax提交表单 最近才发现,jquery ajax提交表单可以这么简单 $.ajax({ url: "udpate", type:"POST", data:$('#formId').serialize(), success: function(data){ alert(data); }, error:function(data){ }}); } 关键在于data:$('#formId').serialize(),这里的formId就是表单的Id. 以

前端学习-jQuery源码学习

jQuery 2 的版本与jQuery 1的版本相比,没有再考虑IE6,7,8的兼容问题,因此使用时如果不用考虑IE6,7,8就用jQuery 2的版本,如果需要考虑IE6,7,8就使用jQuery 1的版本. jQuery对象是一个以DOM为对象的特殊数组,并包含大量方法,简单可以理解为: function jQuery(){     var jquery = [dom1, dom2, dom3];     jquery.fn1 = function(){-};     jquery.fn2

前端学习之ajax

一.什么是json JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示 数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于 机器解析和生成,并有效地提升网络传输效率. json类型是js类型的子集 json对象到json字符串是序列化过程,json字符串到json对象是反序列化过

前端学习JQuery篇05——基本操作(CSS)

CSS css(name|pro|[,val|fn])1.9*访问或设置匹配元素的样式属性. 一个参数为访问 两个参数为设置 jQuery.cssHooks直接向 jQuery 中添加钩子,用于覆盖设置或获取特定 CSS 属性时的方法,目的是为了标准化 CSS 属性名或创建自定义属性. 它的目的是为了标准化 CSS 属性名或创建自定义属性. 例如,某些版本基于Webkit的浏览器需要-webkit-border-radius属性来设置元素的border-radius, 而早期的Firefox版本

前端学习——jquery操作例子

一.jquery和DOM函数的转换 1.1 jquery转换成dom $('#i1') --------------> $('#i1')[0] 2.1 dom转换成jquery var i1=documen.getElementById('#i1')---------> $(i1) 二.写左侧菜单 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&qu

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

这两天在用python的bottle框架开发后台管理系统,接口约定使用RESTful风格请求,前端使用jquery ajax与接口进行交互,使用POST与GET请求时都正常,而Request Method使用PUT或DELETE请求时,直接爆“HTTP Error 405: Method Not Allowed”错误.而ajax提交的Request Method值DELETE也变成了OPTIONS了. 度娘了好多答案,要么说是浏览器不支持,要么说自己重新封装jquery,还有其他的一些方法...

jquery ajax实现上传文件代码,带进度条

原文:jquery ajax实现上传文件代码,带进度条 源代码下载地址:http://www.zuidaima.com/share/1550463291116544.htm ajax上传文件代码,带进度条的. 首页 http://localhost:端口/项目名/common/test.htm 上传中 标签: jquery ajax 上传 进度条话题: Web开发 前端技术 jquery ajax实现上传文件代码,带进度条