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

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

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

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

前端学习——JQuery Ajax使用经验
图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请求和响应】
前端学习——JQuery Ajax使用经验

前端学习——JQuery Ajax使用经验
图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请求和响应】
前端学习——JQuery Ajax使用经验

前端学习——JQuery Ajax使用经验
图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请求和响应】
前端学习——JQuery Ajax使用经验

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

图4 完整的HTTP请求和响应
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118654.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • lxml基本用法_XML是什么

    lxml基本用法_XML是什么lxml库结合libxml2快速强大的特性,使用xpath语法来进行文件格式解析,与Beautiful相比,效率更高。0x01安装可以利用pip安装lxml:pipinstalllxml在windows系统中安装时,可能会出现如下错误:提示如下:error:MicrosoftVisualC++9.0isrequired(Unabletofin…

    2025年6月20日
    5
  • 所阅读的ASP.NET 2.0文章

    所阅读的ASP.NET 2.0文章

    2021年7月22日
    62
  • 【STM32H7的DSP教程】第29章 STM32H7移植汇编定点FFT库(64点,256点和1024点)[通俗易懂]

    【STM32H7的DSP教程】第29章 STM32H7移植汇编定点FFT库(64点,256点和1024点)[通俗易懂]完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547第29章STM32H7移植汇编定点FFT库(64点,256点和1024点)本章主要讲解ST官方汇编FFT库的应用,包括1024点,256点和64点FFT的实现。29.1汇编FFT库说明29.2函数cr4_fft_1024_stm32的使用(含幅频和相频响应)29.3函数cr4_fft_256_stm32的使用29.4函数cr4…

    2025年9月26日
    2
  • 计算机网络之TCP/UDP协议详解[通俗易懂]

    计算机网络之TCP/UDP协议详解[通俗易懂]深度理解TCP/IP1.TCP基础知识1.1什么是TCP?1.2什么是TCP连接?1.3TCP协议段格式1.4TCP主要特点2.UDP基础知识2.1UDP是什么?2.2UDP的协议段格式2.3UDP的主要特点2.4UDP的缓冲区3.TCP和UDP区别总结4.TCP保证可靠的机制4.1重传机制(这里只说了超时重传)4.2滑动窗口4.3流量控制4.3拥塞控制1.TCP基础知识1.1什么是TCP?TCP是⾯向连接的、可靠的、面向字节流的传输层通信协议面向连接:只能一对一连接,

    2022年5月9日
    36
  • react中添加debounce 实现[通俗易懂]

    react中添加debounce 实现[通俗易懂]react中添加debounce实现handelChange(e){//输入框修改的时候执行的方法 e.persist()//react默认会清楚所有的默认属性,所以需要添加这段,保留参数的属性 debounce(()=>{ console.log(e) },500)() }<inputref={ev=>this.moneyInp…

    2022年6月20日
    73
  • sql调用存储过程exec用法_sqlserver存储过程执行日志

    sql调用存储过程exec用法_sqlserver存储过程执行日志一、【存储过程】存储过程的T-SQL语句编译以后可多次执行,由于T-SQL语句不需要重新编译,所以执行存储过程可以 提高性能。存储过程具有以下特点:• 存储过程已在服务器上存储• 存储过程具有安全特性• 存储过程允许模块化程序设计• 存储过程可以减少网络通信流量• 存储过程可以提高运行速度 存储过程分为用户存储过程、系统存储过程和扩展存储过程。存储过程Procedure是一组为了完成…

    2022年8月18日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号