热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Sencha概念Ajax(异步JavaScript和XML)(官网文档翻译13)

Sencha-概念-Ajax(异步JavaScript和XML)(官网文档翻译13)煎茶触摸2提供了各种方便的方式来获得您的
Sencha-概念-Ajax(异步Javascript和XML)(官网文档翻译13)

煎茶触摸2提供了各种方便的方式来获得您的应用程序的流入和流出的数据。所有的数据绑定的组件,如列表,嵌套列表和DataView使用商店的,这是很容易配置获取并保存了大量的各种来源的数据。我们将在数据管理与商店,但首先让我们从如何发出简单的AJAX请求。

简单的请求Ext.Ajax

AJAX请求的URL通常是为您的应用程序在同一个域。例如,如果您的应用程序在http://myapp.com,您可以发送Ajax请求URL类似http://myapp.com/login.php和http://myapp.com/products/1.json的但不是到其他领域,如http://google.com。这是因为浏览器的安全限制,,但煎茶触摸功能提供了一些替代方案来解决这个问题,我们将在短期内(跨域请求和JSON-P)。

现在,这里是我们如何能够使一个AJAX请求加载数据形成我们的域名上的URL:

Ext.Ajax.request({url:'myUrl',callback:function(options, success, response){console.log(response.responseText);}});

假设您的应用程序是http://myapp.com,这是怎么回事发送一个GET请求,http://myapp.com/myUrl。AJAX调用是异步的,所以一旦响应回来,我们的回调函数被调用的响应。我们正在做上面的内容记录到控制台的请求完成时的响应。至今很简单,让我们来看看我们还有什么可以做的。

AJAX选项

,Ext.Ajax需要各种各样的选择,包括设置的方法(GET,POST,PUT和DELETE),发送头文件和设置URL中的params来发送。首先,让我们来看看如何设置的方法,所以我们发送POST请求,而不是GET:

Ext.Ajax.request({url:'myUrl',method:'POST',callback:function(options, success, response){console.log(response.responseText);}});

发送参数也很简单:

Ext.Ajax.request({url:'myUrl',params:{username:'Ed',password:'not a good place to put a password'},callback:function(options, success, response){console.log(response.responseText);}});

当我们这样设置PARAMS,请求将被自动发送一个POST params对象作为表单数据发送。上述请求,就像提交表单的用户名和密码字段。

如果我们想这是一个GET请求发送,而不是我们可以指定方法再次,在这种情况下,我们的PARAMS自动转义,附加到URL为:

Ext.Ajax.request({url:'myUrl',method:'GET',params:{username:'Ed',password:'bad place for a password'},callback:function(options, success, response){console.log(response.responseText);}});

它发送一个请求到:

http://mywebsite.com/myUrl?_dc=1329443875411&username=Ed&password=bad%20place%20for%20a%20password

您可能已经注意到,我们的最后一个请求创建了一个网址,包含“_DC = 1329443875411”。这样,当你犯了一个GET请求,许多Web服务器将缓存响应,并给你同样的事情每次你的要求。这加快了网络,但不总是你想要的。在应用程序中其实是很少,你想要什么,所以我们“萧条”通过添加时间戳到每一个请求的缓存。这告诉web服务器把它是一个新鲜的,未缓存的请求。

如果你想关闭该行为,我们就可以设置为false disableCaching:

Ext.Ajax.request({url:'myUrl',method:'GET',disableCaching:false,params:{username:'Ed',password:'bad place for a password'},callback:function(options, success, response){console.log(response.responseText);}});

现在我们的要求不再包含缓存清除的字符串,并期待更多类似这样的:

http://mywebsite.com/myUrl?username=Ed&password=bad%20place%20for%20a%20password

发送消息头

我们来看看当它涉及到自定义请求本身的最后一个选项是标头选项。这使您可以发送任何自定义的头,你要到你的服务器,这常常是有用的,当Web服务器返回不同的内容,根据这些头文件。例如,如果你的Web服务器返回的头它是通过基于JSON,XML或CSV,我们可以要求它为JSON是这样的:

Ext.Ajax.request({url:'myUrl',headers:{"Content-Type":"application/json"},callback:function(options, success, response){console.log(response.responseText);}});

如果您创建一个这样的请求,并检查它在Firebug的/网页检查,你会看到,Content-Type头被设置为application / json。您的Web服务器可以拿起发送给您正确的反应。你可以传递任何数量的头,你喜欢的标头“选项。

回拨选项

并不是每一个AJAX请求成功。有时服务器已关闭,或您的网络连接断开,或别的什么不好的事情发生。通过Ext.Ajax让您指定这些情况下,每个单独的回调:

Ext.Ajax.request({url:'myUrl',success:function(response){console.log("Spiffing, everything worked");},failure:function(response){console.log("Curses, something terrible happened");}});

这不正是你所期望他们做的,希望是大部分的时间,这是你的成功回调,被称为。这是很常见的一个成功回调,更新UI或任何其他需要的应用程序流,和故障处理程序,要么重试的要求或提醒用户出现了错误。

您可以在相同的时间提供成功 / 失败回调,所以此请求如果一切正常,我们的 成功函数被称为第一,其次是主要的回调函数,否则它会是失败,随后回调:

Ext.Ajax.request({url:'myUrl',success:function(response){console.log("Spiffing, everything worked");},failure:function(response){console.log("Curses, something terrible happened");},callback:function(options, success, response){console.log("It is what it is");}});

超时和中止请求

请求可能会失败的另一种方式是,如果服务器的响应和请求超时时间过长。在这种情况下,你的 失败函数将被调用,并请求对象,它是通过将有TIMEDOUT的真实:

Ext.Ajax.request({url:'myUrl',failure:function(response){console.log(response.timedout);// logs true}});

默认情况下,超时阈值是30秒,但你可以指定它为每个请求通过设定超时时间,单位为毫秒。在这种情况下,我们的请求将在5秒后放弃:

Ext.Ajax.request({url:'myUrl',timeout:5000,failure:function(response){console.log(response.timedout);// logs true}});

也有可能中止当前的请求出色的。要做到这一点,你需要保存请求对象的引用Ext.Ajax.request给你:

var myRequest =Ext.Ajax.request({url:'myUrl',failure:function(response){console.log(response.aborted);// logs true}});Ext.Ajax.abort(myRequest);

这一次我们的失败回调被称为其response.aborted属性设置。我们可以使用所有的错误处理,在我们的应用程序:

Ext.Ajax.request({url:'myUrl',failure:function(response){if(response.timedout){Ext.Msg.alert('Timeout',"The server timed out :(");}elseif(response.aborted){Ext.Msg.alert('Aborted',"Looks like you aborted the request");}else{Ext.Msg.alert('Bad',"Something went wrong with your request");}}});

跨域请求

一个相对较新的现代浏览器的能力被称为的CORS,代表跨地资源共享。这可以让你的浏览器没有通常的安全限制,执行请求发送到其他域。煎茶触摸2 CORS的支持,虽然你可能需要做一个小小的设置,使Web服务器上的。如果你不熟悉你所需要的做您的Web服务器上,使CORS,快速谷歌搜索应该给你足够的答案。

假设你的服务器的建立,尽管,发送CORS要求很简单:

Ext.Ajax.request({url:'http://www.somedomain.com/some/awesome/url.php',withCredentials:true,useDefaultXhrHeader:false});

表上传

我们将讨论的最后一件事是上传的形式。这也很容易:

Ext.Ajax.request({url:'myUrl',form:'myFormId',callback:function(options, success, response){if(success){Ext.Msg.alert('Success','We got your form submission');}else{Ext.Msg.alert('Fail','Hmm, that did not work');}}});

这找到一个的页面上的标签ID =的“myFormId”,抓住它的数据,并把它的请求参数对象,就像在本指南开始。然后将其提交给指定的URL,并调用回调函数,像正常的。

posted on 2012-12-26 21:55 CW.Liu 阅读(...) 评论(...) 编辑 收藏

转:https://www.cnblogs.com/cheman/archive/2012/12/26/2834860.html



推荐阅读
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 本文详细探讨了 jQuery 中 `ajaxSubmit` 方法的使用技巧及其应用场景。首先,介绍了如何正确引入必要的脚本文件,如 `jquery.form.js` 和 `jquery-1.8.0.min.js`。接着,通过具体示例展示了如何利用 `ajaxSubmit` 方法实现表单的异步提交,包括数据的发送、接收和处理。此外,还讨论了该方法在不同场景下的应用,如文件上传、表单验证和动态更新页面内容等,提供了丰富的代码示例和最佳实践建议。 ... [详细]
  • 本文探讨了如何利用 jQuery 的 JSONP 技术实现跨域调用外部 Web 服务。通过详细解析 JSONP 的工作原理及其在 jQuery 中的应用,本文提供了实用的代码示例和最佳实践,帮助开发者解决跨域请求中的常见问题。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 重要知识点有:函数参数默许值、盈余参数、扩大运算符、new.target属性、块级函数、箭头函数以及尾挪用优化《深切明白ES6》笔记目次函数的默许参数在ES5中,我们给函数传参数, ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
author-avatar
手机用户2602881147
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有