`
ahut9923
  • 浏览: 238348 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

dojo的编码问题 - dojo.io.bind编码

阅读更多

网摘记录一下,出处 http://www.ajaxbbs.com/blog/?p=18

----------------------
AJAX留言板今天增加了后台的删除功能,明天增加回复功能。

这个AJAX留言板目前用到了dojo,本来用原生Js也可以完全做到,但为了熟悉AJAX框架,开始采用dojo,权当练练手。使用中也确实发现,dojo确实省去了好多重复的东西,比如创建xhr对象等等,不过框架过于庞大,熟悉起来有一定难度,需要一个过程。

今天在调试时,看到有网友留言,显示内容为乱码;比较郁闷,因前几天因乱码问题已经解决了,为何又出现了呢?原来用的是原生JS,看来有可能是dojo的问题。

先简单介绍一下dojo.io模块

dojo.io.bind模块:处理请求并处理取回的数据,用法如下:

Usage Example:

dojo.io.bind({
url: “http://localhost/test.html“, //要请求的页面地址
mimetype: “text/html”, //请求的页面的类型,应该设置为与你请求页面类型对应的mimetype,默认为 “text/plain”,也可为”text/xml”
method:”GET”, //默认为”GET”
sync: false, //默认为异步执行
useCache: false, //默认为不使用页面缓存,注意这里的缓存并不是浏览器的缓存,而是Dojo自身所维护的页面缓存
preventCache: false, //默认为启用浏览器缓存,否则将通过自动增加不同的参数来确保浏览器缓存失效
timeoutSeconds: 3000, //3秒后超时,如果为0则永不超时
load: function(type, data, evt) { alert(data); }, //type should be “load”, data is that we wanted
error: function(type, error) { alert(error.message); }, //error is dojo.io.Error
timeout: function(type) { alert(”请求超时!”); }
});

详细的使用方法回头整理一下再发出来吧。先接着说乱码的解决方法。

经过用google搜索”dojo.io.bind charset”,找到一篇文章,是dojo官方网站的maillist,地址在这里:http://dojotoolkit.org/pipermail/dojo-interest/2005-November/002156.html,标题是dojo.io.bind encoding。

文中写到:

Thank you Martin, Bob and David!

I did some test, it looks like dojo.io.bind doesn’t support those two
characters encoding. I think I will try to dig into the source code. If I
find anythiing I’ll let you know.

Siyan

作者遇到了象我一样的问题,即dojo.io.bind的编码问题。

回复如下(我就是根据这个方法解决的)
> > > On Nov 28, 2005, at 7:33 PM, David Schontzler wrote:
> > >
> > > > Right now you can specify either UTF or ASCII encoding. Encoding
> > > gets
> > > > pretty hairy and we’ve tried to mimic the browser as much as
> > > possible,
> > > > but I probably missed something. You can try switching between the
> > > two
> > > > by setting encoding on the bind call:
> > > >
> > > > dojo.io.bind({
> > > > url: “…”,
> > > > encoding: “utf-8″,
> > > > …
> > > > });
> > > >
> > > > That’ll give you UTF-8 encoding (the default is ASCII anyhow). If
> > > you
> > > > want to set this option globally, you can do so in djConfig:
> > > >
> > > > djConfig = {
> > > > bindEncoding: “utf-8″,
> > > > …
> > > > }

即一个是在dojo.io.bind中加参数 encoding: “utf-8″,另一个是配置djConfig,增加一行:bindEncoding: “utf-8″,这两种方法我都分别试过,都可以。但这两个在官方的文档中好象没有说明。

上文中有一句话”the default is ASCII anyhow”,指dojo.io.bind默认的是ascii编码,应该是这个原因造成的,不知为何不默认为utf-8。

不管怎样终于解决了。编码问题总是比较烦人。

分享到:
评论

相关推荐

    dojo-release-1.0.3-src.zip

    7. **dojo.io.bind**:旧版的异步通信方法,通过它可以实现与服务器的数据交换,是dojo.xhr的前身。 8. **国际化(i18n)**:Dojo提供了完善的国际化支持,允许开发者轻松地为应用程序添加多语言功能。 9. **源码...

    dojo-0.4.3-ajax.rar

    对于初学者,可以从了解Dojo的模块系统开始,然后深入到 xhr 和 data API,接着实践如何通过dojo.io.bind进行AJAX请求。同时,结合教程中的示例,可以更好地掌握Dojo框架与AJAX的结合应用。 总结来说,《dojo-...

    dojo-0.3.1-ajax

    8. **dojo.io.bind** 在Dojo 0.3.1中,`dojo.io.bind`是一个更底层的AJAX接口,它可以处理更多的细节,如自定义请求头、超时和自定义HTTP方法。不过,它不如xhr系列方法常用,因为后者的API更简洁。 9. **dojo....

    dojo-0.4.2-ajax.rar

    Dojo 0.4.2还提供了`dojo.io.bind`,这是一个更为通用的Ajax函数,能够处理更复杂的请求场景,如上传文件或使用流式传输。 在Dojo中,`dojo.data`模块则用于数据存储和检索,它与Ajax结合,可以方便地从服务器获取...

    dojo-0.4.3-ajax

    在Dojo 0.4.3中,还有`dojo.io.bind`,这是一个更高级的Ajax功能,它允许更复杂的请求配置,如传递额外的HTTP头、自定义数据编码等。通过`dojo.io.bind`,开发者可以创建更灵活的Ajax解决方案,适应不同的服务端需求...

    dojo-0.4.1-ajax

    对于需要定制化请求的场景,`dojo.io.bind`是一个强大的工具。 4. **JSON-P (JSON with Padding)**: Dojo也支持跨域数据获取,通过JSON-P技术。JSON-P是一种绕过同源策略限制的方法,通过在返回的JSON数据前添加一...

    dojo-0.4.0-ajax

    2. `dojo.io.bind`: 这是一个较旧但仍然可用的接口,用于发起AJAX请求。它支持多种传输机制,如IFrame、Script、XHR等,并可以处理各种数据类型。 3. `dojo.Deferred`: 在AJAX请求中,`dojo.Deferred`对象用于管理...

    Dojo入门手册.rar

    6 使用dojo.io.bind()的Ajax远程调用...................8 6.1.1 淡出和移除......9 6.1.2 使用XMLHttpRequest来告诉服务器发生了什么................... 9 7 拖放操作...................... 10 7.1.1 连接...

    Dojo中文手册_IT168文库.pdf

    4. XML和Ajax支持:Dojo不仅封装了XMLHttpRequest对象,还提供了 dojo.io.bind() 方法来实现Ajax远程调用,增强了与服务器的交互能力。 5. 数据结构和加密功能:Dojo提供了实用的集合数据结构,如List、Query、Set...

    实战Dojo工具包

    Dojo 的 `dojo.io.bind()` 函数提供了一种简单的方式来发起Ajax请求,并处理响应数据。 ```javascript var request = dojo.io.bind({ url: "path/to/server", method: "POST", content: { key: "value" }, load...

    dojo JavaScript框架 Ajax学习

    dojo JavaScript框架是Web开发中的一个强大工具,特别在处理...在学习过程中,深入理解`dojo.xhr`、`dojo.io.bind`、`dojo.data`、`dijit`以及状态管理和事件系统等核心概念,将对提升JavaScript和Ajax技能大有裨益。

    introduction to dojo toolkit(SUN)

    Dojo 提供了一个强大的 API `dojo.io.bind`,用于处理异步请求。通过这个 API,开发者可以轻松地与服务器进行交互,实现数据的异步加载和更新。 #### 2. DOM 操作 (Dojo DOM Manipulation) Dojo Toolkit 为操作 ...

    Dojo学习资料 入门教材

    `dojo.io.queueBind`则是对`dojo.io.bind`的扩展,允许你批量发送请求并按顺序执行。 `dojo.lang.string`模块包含了一系列处理字符串的实用方法,这些方法可以帮助开发者更加便捷地操作和格式化字符串。例如: 1. ...

    dojo Ajax

    2. **dojo.io.bind**: 这是dojo早期版本中用于处理Ajax请求的方法,虽然在新的dojo版本中已被xhr接口取代,但理解其工作原理有助于理解dojo的进化过程。`dojo.io.bind`允许开发者定义请求参数、处理函数以及数据绑定...

    dojo toolkit

    Dojo的Ajax功能通过`dojo.io.*`模块实现,如`dojo.io.bind`方法用于发起异步请求,`dojo.xhr`模块提供简化后的API,如`dojo.xhrGet`、`dojo.xhrPost`等,方便开发者进行GET和POST操作。 除了Ajax,Dojo还提供了一种...

    Dojo 工具包教程

    Dojo Toolkit通过`dojo.io.bind`提供了强大的远程调用能力。这一特性允许开发者轻松实现客户端与服务器之间的异步通信,从而提升Web应用的交互性和性能。 #### 五、Dojo DOM Manipulation Dojo Toolkit内置了一...

    Dojo构建Ajax应用程序

    这可能包括如何在Dojo中处理JSON、XML或其他数据格式,以及使用Dojo的`dojo.io.bind`进行复杂的数据交换。 5. **Dojo组件**:书中可能还涵盖了Dojo的UI组件(dijits),如按钮、下拉菜单、日历等,以及如何使用`...

    DOJO工具包简单介绍

    `dojo.io.bind()`是Dojo早期版本中的Ajax通信方法。它允许向服务器发送异步请求,并接收响应数据。在Dojo 1.7及更高版本中,推荐使用`dojo/xhr`模块代替。 - **淡出和移除**:在请求完成或失败时,可以添加回调函数...

Global site tag (gtag.js) - Google Analytics