AJAX

什么是AJAX?

AJAX的全称(Asynchronous Javascript And XML)异步的JavaScript和XML;
AJAX不是某种编程语言,AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
如果仔细观察一个Form的提交,你就会发现,一旦用户点击“Submit”按钮,表单开始提交,浏览器就会刷新页面,然后在新页面里告诉你操作是成功了还是失败了。如果不幸由于网络太慢或者其他原因,就会得到一个404页面。
这就是Web的运作原理:一次HTTP请求对应一个页面。
如果要让用户留在当前页面中,同时发出新的HTTP请求,就必须用JavaScript发送这个新请求,接收到数据后,再用JavaScript更新页面,这样一来,用户就感觉自己仍然停留在当前页面,但是数据却可以不断地更新。

同步请求

异步请求

通过AJAX可以用于后台和服务器交换数据,并且数据交换过程中无需重新加载页面,在这种情况下进行交换数据并且可以对网页部分更新

  • 运用HTML和CSS来实现页面,表达信息
  • 运用AJAX和web服务器进行数据的异步交换
  • 运用JavaScript操作DOM,实现动态局部刷新

什么是DOM对象

DOM是文档对象模型(Document Object Model)是基于浏览器编程一套API接口,通过它,我们可以访问HTML文档对象属性、方法、事件,还可以对其进行操作。
在HTML中所有的事物都有节点,DOM将HTML文档视作节点树,通过DOM,节点树中的是所有节点都可以通过JavaScript进行访问,所有的HTML元素都可以被修改、创建、删除。

Ajax-HTTP请求

http是计算机通过网络进行通信的规则

用jQuery实现Ajax

ajax常用参数列表

type:请求方式(post或get)默认为get;
url:发送请求的地址(默认为当前页地址);
data:Object或String类型的参数,连同请求发送到服务器的数据;
dataType:预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息来智能判断;
常用数据类型:
xml:返回XML文档,可用JQuery处理。
html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。
script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。
json:返回JSON数据。
jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。
text:返回纯文本字符串。
beforeSend:用于在向服务器发送请求前执行一些动作。防止重复数据,在实际项目开发中,提交表单时常常由于网络或者其原因,用户点击提交按钮误认为自己没有操作成功,进而会重复提交按钮操作次数,如果页面前端代码没有做一些相应的处理,通常会导致多条同样的数据插入数据库,导致脏数据的增加。要避免这种现象,在$.ajax请求中的beforeSend方法中把提交按钮禁用掉,等到Ajax请求执行完毕,在恢复按钮的可用状态。或者使用jQuery中的消息提示插件jquery.toast.js;

//在页面中引入jquery.toast.css文件,jquery和jquery.toast.js文件。
//简单的文本消息提示框
$.toast({
  text : "错误提示信息",
  position : 'top-center'
});
//自定义消息提示框
$.toast({ 
  text : "......", 
  showHideTransition : 'slide',
  bgColor : 'blue',
  textColor : '#eee',
  allowToastClose : false,
  hideAfter : 5000,
  stack : 5,
  textAlign : 'left',
  position : 'bottom-left'
}) 

text:消息提示框的内容。
showHideTransition:消息提示框的动画效果。可取值:plain,fade,slide。
bgColor:背景颜色。
textColor:文字颜色。
allowToastClose:是否显示关闭按钮。
hideAfter:设置为false则消息提示框不自动关闭。设置为一个数值则在指定的毫秒之后自动关闭消息提示框。
stack:消息栈。
textAlign:文本对齐:left, right, center。
position:消息提示框的位置:bottom-left 、 bottom-right 、 bottom-center 、 top-left 、 top-right 、 top-center 、 mid-center。

success:是一个方法,请求成功后的回调函数,传入返回后的数据,以及包含成功代码的字符串;
error:是一个方法,请求失败时调用的函数;

案例代码:

        $.ajax({
            type: 'POST',
            url: 'service.php',
            dataType: 'html',
            data: {
                name: $('#name').val(),
                number: $('#number').val(),
                sex: $('#sex').val(),
                job: $('#job').val()
            },
            beforeSend: function() {
            $("#submit").attr({ disabled: "disabled" });
            }
            success: function(data) {
                $('#createResult').html(data);
            },
            error: function(data) {1
                alert('操作失败');
            }
        })

Ajax跨域

$.ajax({
            url: "http://127.0.0.1:33654/up.ojbk?mode=now&table="+rs+"&callback=funName",//接口返回格式:funName({"status":true,"msg":"提交成功"});
            dataType: 'jsonp',
            jsonp: 'callback',
            jsonpCallback: 'funName',
            success: function(e) {

                if (e.status) {
                    $.ajax({
                        url: 'http://127.0.0.1:33654/up.ojbk?mode=check&callback=funName',
                        dataType: 'jsonp',
                        jsonp: 'callback',
                        jsonpCallback: 'funName',
                        success: function (d) {
                            alert(d.msg);
                        }
                    });
                }
            }
        });

跨域接口请求返回值:funName({'code':true,'msg':'返回请求结果'});jsonpCallback一定要与接口返回函数包名称相同;

Javascript出于安全方面的考虑,不允许跨域调用其它页面的对象。什么是跨域呢?简单的理解就是因为javascript同源策略的限制,a.com域名下的js无法操作b.com或是c.com域名下的对象;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容