首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端Ajax技术原理

image.png Ajax的工作原理: Ajax工作原理其实就是在一个页面的指定位置可以加载另一个页面中所有的输出内容。这样就实现了一个静态页面获取到数据库中所返回的数据信息了。...对象来向服务器发出异步请求,从服务器获得数据,然后用Javascript来操作DOM而更新页面。...ajax原理和XmlHttpRequest对象 Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。...答案是肯定的,用过Gmail的知道,Gmail下面采用的ajax技术解决了这个问题,在Gmail下面是可以后退的,但是,它也并不能改变ajax的机制,它只是采用的一个比较笨但是有效的办法,即用户单击后退按钮访问历史记录时...(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)

65700

pushState、replaceState、onpopstate 实现Ajax页面的前进后退刷新

但也存在这一些问题: 再刷新页面,页面就会变成初始的状态 浏览器的前进后退功能无效 对搜索引擎的爬虫抓取不友好  1、 早前会使用浏览器的 hash锚点 来解决 不同的hash标记着页面不同的部分...,能修正页面刷新数据不正确的问题 再通过 onhashchange 事件监听hash锚点的变化,手动进行前进后退操作,浏览器支持度 Chrome FireFox IE Opera Safari 5.0...这个栗子目的是:初始值为0,通过异步请求自增值,可以前进或后退以及刷新,新打开一个url后也能获取相应的数据 history.pushState(state, title, url) history.replaceState...val=num 的方式,标记了不同的ajax结果页 Tips: 使用pushState之后,当前进后退触发了popstate事件,获取到相应的json对象 json对象的数据可自定义 可简单地存储相关标记再发个请求...,或者直接将该标记页对应的结果直接存起来 随着后退操作,地址栏url得到了更新,异步的数据也得到了更新 刷新页面或新打开页面,就要根据url中的标记去请求数据了 要记住的是,浏览器并不会自动加载url这部分标记对应的这个异步内容页

2.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    HTML5 简介(三):利用 History API 无刷新更改地址栏

    前进」、「后退」按钮时,就会触发popstate事件。...假设一个页面左侧是若干导航链接,右侧是内容,同时导航时只有右侧的内容需要更新,那么刷新整个页面无疑是浪费的。这时我们可以使用 AJAX 来拉取右面的数据。...但是如果仅仅这样,地址栏是不会改变的,用户无法前进、后退,也无法收藏当前页面或者把当前页面分享给他人;搜索引擎抓取也有困难。这时,就可以使用 HTML5 的 History API 来解决这个问题。...为了处理用户前进、后退,我们监听popstate事件。当用户点击前进或后退按钮时,浏览器地址自动被转换成相应的地址,同时popstate事件发生。...在事件处理函数中,我们根据当前的地址抓取相应的内容,然后利用 AJAX 拉取这个地址的真正内容,呈现,即可。

    2.3K10

    Ajax与jQuery异步加载数据

    ,能够更新部分网页的技术。...将展示Ajax数据 (document).ready(function(){})指页面其他元素加载完成后开始加载Ajax数据,此时,浏览器不会有加载条和转圈的情况出现。...在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。...一个被完整读入的页面与一个已经被动态修改过的页面之间的可能差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在Ajax应用程序中,却无法这样做。...不过开发者已想出了种种办法来解决这个问题,HTML5之前的方法大多是在用户单击后退按钮访问历史记录时,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。

    10.9K20

    AJAX常见面试问题

    页面不进行跳转刷新的时候,异步处理数据的时候,表单自动补全功能—-使用Ajax, 提交后不再使用原页面,可以进行跳转刷新的,查询之类的功能,可以不用Ajax 优点: .无刷新更新数据。...一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙;用户通常会希望单击后退按钮能够取消他们的前一次操作,但是在Ajax应用程序中,这将无法实现。...答案是肯定的,用过Gmail的知道,Gmail下面采用的Ajax技术解决了这个问题,在Gmail下面是可以后退的,但是,它也并不能改变Ajax的机制,它只是采用的一个比较笨但是有效的办法,即用户单击后退按钮访问历史记录时...(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)...(许多浏览器允许JavaScript动态更新锚点,这使得Ajax应用程序能够在更新显示内容的同时更新锚点。)这些解决方案也同时解决了许多关于不支持后退按钮的争论。 .AJAX的安全问题。

    1.8K20

    2019面试题:简单介绍下Ajax

    Ajax是Web2.0技术的核心由多种技术集合而成,使用Ajax技术不必刷新整个页面,只需对页面的局部进行更新,可以节省网络带宽,提高页面的加载速度,从而缩短用户等待时间,改善用户体验。 什么是同步?...用了AJAX之后,你点击,然后页面上的一行字就变化了,页面本身不用刷。 Ajax只是一种技术,不是某种具体的东西。不同的浏览器有自己实现AJAX的组件。...Ajax优点: 1.无刷新更新数据,减少用户等到时间,更好的用户体验。 2.异步与服务器通信,无需打断用户,响应更加迅速。...Ajax缺点: 1.破坏了前进后退功能,用户往往通过后退按钮来取消上一步操作,但是使用ajax无法实现。...可以使用Gmail来解决这个问题,它只是采用的一个比较笨但是有效的办法,即用户单击后退按钮访问历史记录时,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。 2.安全问题。

    56600

    爬虫杀手锏-PhantomJS(附案列网站模拟登录豆瓣网)

    PhantomJS:无界面的浏览器 Selenium: 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。...") # 获取页面名为 wrapper的id标签的文本内容 data = driver.find_element_by_id("wrapper").text # 打印数据内容 print data #...driver.save_screenshot("长城.png") # 打印网页渲染后的源代码 print driver.page_source # 获取当前页面Cookie print driver.get_cookies...关闭当前页面,如果只有一个页面,会关闭浏览器# driver.close() # 关闭浏览器 driver.quit() 2.页面操作大体内容 # 获取id标签值 element = driver.find_element_by_id...) 操作页面的前进和后退 driver.forward() #前进 driver.back() # 后退 页面等待 显式等待是等待特定的时间,隐式等待是指定某一条件直到这个条件成立时继续执行

    1.3K20

    java中的jQuery与Ajax的应用,菜鸟教程

    Ajax揭开了无刷新更新页面的新时代,并有代替系统的Web方式和通过隐藏的框架来进行异步提交的趋势,是Web开发应用的一个里程碑。...Ajax的优势与不足 优点 缺点 不需要插件支持 浏览器对XMLHttpRequest对象的支持度不足 优秀的用户体验 破坏浏览器的前进后退按钮的正常使用 提高Web程序的性能 对搜索引擎的支持不足...500——服务器产生内部错误 4.方法 labort()暂停请求,并重置到未初始化状态 lopen() 加载要链接的页面 lsend() 把该请求发送到服务器 说明:1)...例子:创建一个HTML文件,名字为inner.html,然后再建一个页面test.html,添加一个button元素,添加一个id为resTest的元素,当单击button时,resText显示追加的...例如 function(dt){alert(dt)} type:服务器返回内容的格式,包括xml html script json text 例子: 页面搭建:

    1.4K30

    Ajax之一 简介篇

    下面我看两个具体的例子。 1.Google Suggest(搜索建议) 有了搜索建议后,我们只需要输入关键字的前几个字或拼音,就可以把相关的热门关键字都显示出来。剩下的关键字部分就可以通过选择来完成。...虽然Asp.NetAJAX为需要创建Ajax应用程序的客户端脚本的开发人员提供了一大堆的好处,但它却不只是编写JavaScript以对服务器端发出异步调用那么简单。...页面图1-8所示: 点击按钮页面上的按钮后会显示当前计算机日期和时间 按钮的代码如下: this.Label1.Text=DateTime.Now.ToString(); 在单击按钮之前,页面的代码如程序清单...终端用户单击页面上的按钮时,会执行服务器回传的完整过程,重新处理整个页面,并返回给客户的浏览器。...运行效果:如果单击Button1,进行整个页面的会送,就会在响应中得到这些代码,后退按钮会变绿;如果单击Button2,则会部分刷新页面,后退按钮不会刷新,仍然为灰色。

    8910

    什么是 Ajax ?

    异步的直观表现就是:当前页面发送一个请求给服务器,当前页面不需要等待服务器响应也可以继续操作网页。...这时,可以检测XHR对象的readyState属性,它有以下几个可能的值: 0:未初始化。尚未调用open() 1: 启动。已调用open(),未调用send() 2: 发送。...已调用send(),为未收到响应 3:接受。已接受到部分数据 4:完成。已接受全部数据 readyState的值每次变化都会触发一次readystatechange事件。...:响应的http状态 statusText:http状态的说明 收到响应后,我们首先应根据http的状态判断是否成功,一般状态码status = 200,被是做成功状态码为304表示内容未被修改,可使用本地缓存...abort()方法来取消异步操作: xhr.abort() Ajax 的缺点就目前来看,主要是破坏了浏览器的前进和后退功能。

    26020

    如何制作自己的原生 JavaScript 路由

    太糟糕了,因为单击浏览器的“后退”和“前进”按钮与浏览历史记录中的 URL 导航有关。如果没有 History API,就无法谈论路由。...这就是使浏览器无需重新加载页面即可更改 URL 的原因。 结果:现在,每次我们单击按钮时,URL 实际上都会在浏览器的地址栏中更改。内容框也会更新。 ? 我们的原生 JS 路由开始运行了。...它们应与你要导航到的实际页面一致。当然这不是存储页面名称的唯一方法,例如可以用 array [] 或其他任何方式。这就是本例中的操作方式。 当然我们还需要从服务器加载有关该位置的布局和资源的内容。...这是你必须再次更新视图的部分。(第一次是我们单击按钮时。) 但是由于该事件带有单击的 id,因此单击 Back 或 Forward 时很容易刷新视图并重新加载内容。...实施完毕后,你的路由就完成了。你如何选择重新加载 #content 元素中的内容完全取决于你自己和你的后端设计。

    3.9K20

    pjax使用小结

    简介 ---- 虽然传统的 ajax 方式可以异步无刷新改变页面内容,但无法改变页面 URL,因此有种方案是在内容发生改变后通过改变 URL 的 hash 的方式获得更好的可访问性(如 https://...pjax 结合 pushState 和 ajax 技术, 不需要重新加载整个页面就能从服务器加载 Html 到你当前页面,这个 ajax 请求会有永久链接、title 并支持浏览器的回退/前进按钮。...使用pjax后,由于只刷新部分页面,切换效果更加流畅,而且可以定制过度动画,在等待页面加载的时候体验就比较舒服了。...scrollTo 0 页面加载后垂直滚动距离( 与原页面保持一致可使过度效果更平滑 ) type "GET" ajax 的参数,http 请求方式 dataType "html" ajax 的参数,响应内容的...浏览器前进/后退导航时触发的事件(暂时没做过多研究) 事件名 参数 说明 pjax:popstate 页面导航方向: 'forward'/'back'(前进/后退) pjax:start null,

    2.9K40

    React Router核心依赖--history库

    在jQuery统治前端的年代,通过ajax请求无刷新更新页面是当时相当流行的页面处理方式,SPA的雏形就是那时候演化出来的。...为了标示页面发生的变化,方便刷新后依然能显示正确的页面元素,一般会通过改变url的hash值来唯一定位页面。但这会带来另一个问题:用户无法使用前进/后退来切换页面。...在浏览器进行前进/后退操作的时候,实际上就是调用history对象的对应方法(forward/back),取出对应的state,从而进行页面的切换。...时传入的对象 back, // 方法,后退 forward, // 方法,前进 go, // 方法,前进或后退n个记录...以上是hash改变的时候被动更新相关的内容,下面再看下主动更新相关的代码,以push为例,replace大同小异。

    89520

    Ajax工作原理及实例「建议收藏」

    4、ajax原理和XmlHttpRequest对象   Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面...对象状态值     0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)     1 (初始化) 对象已建立,尚未调用send方法     2 (发送数据) send方法已调用,但是当前的状态及...答案是肯定的,用过Gmail的知道,Gmail下面采用的ajax技术解决了这个问题,在Gmail下面是可以后退的,但是,它也并不能改变ajax的机制,它只是采用的一个比较笨但是有效的办法,即用户单击后退按钮访问历史记录时...(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)...要求为Function类型的参数,请求完成后调用的回调函数(请求成功或失败时均调用)。

    67510

    location的hash部分和使用window.onhashchange实现ajax请求内容时使用浏览器后退和前进功能

    hash就是uri中#及后面的部分,例如:www.google.com.hk#123的#123。...当只有hash部分发生变化时,浏览器的历史记录会产生记录,但不会向服务器发出请求,这时按后退键地址栏的uri会变化但页面内容不变。  ...下面就讲述一下hash结合ajax的使用,ajax每次取数据时页面更新后浏览器并不产生历史记录,也就是说后退和前进按钮失去应用的效用,这时可以结合hash和window.onhashchange来使用,...document.getElementById("div1").innerHTML=eval("obj['"+hashStr+"']"); 31 } 32 1.AjaxHasPool是自己封装的ajax...类,其中的ajax.Startup()就是发送ajax请求; 2.Object对象保存历史记录,如果对象属性为数字的话,要用obj["1"]的方式来实例化,否者会违反命名规范。

    938100
    领券