- 浏览: 2610911 次
- 性别:
- 来自: 小胖儿的大城
文章分类
最新评论
-
ni4wangba0:
ni4wangba0 写道亲测,算法有问题。对不起,其实是我自 ...
谈谈"求线段交点"的几种算法(js实现,完整版) -
ni4wangba0:
亲测,算法有问题。
谈谈"求线段交点"的几种算法(js实现,完整版) -
kers007:
苹果不让Webapp 在appstore 里发布,我不知道对 ...
苹果真的要在 AppStore 里封杀 WebApp 吗? -
striveandlive:
fins = js大牛
[原创]GT-Template, 一个超轻量级的js模板工具. -
AlwaysYang:
基础扎实的才能行走天下。
关于body的"大小"在ie和ff下的一些基础知识
ajax开发中, 常遇到下面的几种情况:
1 服务端需要返回一段普通文本给客户端
2 服务端需要返回一段HTML代码给客户端
3 服务端需要返回一段XML代码给客户端
4 服务端需要返回一段javascript代码给客户端
5 服务端需要返回一段json串给客户端
================================
对于每一种返回类型 规范的做法是要在服务端指定 response的contentType 的.
(当然 不指定绝大多数情况下也没什么问题 尤其是返回"非xml"的时候)
以上三个可以说是毫无争议的, 也没什么值得讨论的,
但是另外两种情况 就要注意一下了.
javascript 的 contentType 按最标准的写法 应该是 application/javascript.
而常用的 text/javascript 已经被 rfc定义为废弃的.
(参见 rfc4329)
但是 在这里暂时不建议使用 application/javascript .
大家还是继续使用 text/javascript 为好.
因为很多老旧浏览器并不支持 application/javascript .
而所有浏览器都支持 text/javascript.
在标准和广泛的兼容性之间 还是暂且选择后者吧.
json 的 contentType 常见写法有 : text/json & text/javascript .
但是 这个 text/json 其实是根本不存在的,
而 text/javascript 在有些时候客户端处理起来会有歧义.
对于json的contentType , rfc里定义的标准写法是 :application/json.
(参见 rfc4627)
在这里毫无疑问 我们应该选择标准写法的 application/json.
======================
也许有人会问, 设置这些有什么用呢?
以前一些程序没有设置这些东西 运行的也很好啊.
首先必须承认的一点是, 这些信息 在目前绝大多数情况下 确实不设置也可以.
但是这种做法是不规范不标准的.
未来对于复杂的ajax应用 ,不规范的行为是会带来很大的隐患.
举个例子.
对于同样的内容 可以有下面的3种形式
html形式
对于 html 形式,客户端得到数据后,往往是对其做dom操作.
javascript形式
对于 javascript形式,往往是对其做eval操作:
eval(responseText);
json形式
对于 json形式,往往是对其做 eval操作之后 赋值给某变量:
var clientVar= eval(responseText);
客户端拿到不同形式的代码 所要做的工作是不一样的.
如果没有设置 contentType 客户端很难判断 返回的数据是什么, 该怎么处理.
==========================
另外,对于返回信息,如果不设置contentType,web服务器往往会给返回的内容添加一个"默认的contentType",
但是这个"默认"会根据服务器的不同 以及web应用配置的不同而不同.
而浏览器对于没有足够头信息的返回值 也会做出"某些默认行为(打开 或下载 或报错".
总之 不同浏览器 不同的浏览器设置 结果可能是不一样的 无法把控.
也就是说 当我们不指定正确的contentType时, 我们所能做的只能是祈祷 在所有环境中, 程序的表现是一致的,
但是与其"祈祷"不如我们亲自把这些信息加上来得可靠.
所以 正确设置返回信息的 contentType 还是很有必要的.
======================
总结 & 建议 :
1.
服务端 向 客户端 发送 JSON数据 时:
Content-Type = 'application/json;charset=UTF-8'
2.
服务端 向 客户端 发送 JS 代码 时:
Content-Type = 'text/javascript;charset=UTF-8'
3
服务端 判断 客户端 提交的是否是 JSON数据 时 :
Content-Type = 'application/json;charset=UTF-8'
Content-Type = 'text/json;charset=UTF-8'
Content-Type = 'text/javascript;charset=UTF-8'
Content-Type = 'application/javascript;charset=UTF-8'
只要 Content-Type 满足上面4个条件中的 任意一个时,就可以认为提交的数据是 JSON数据.
之所以要提供4种选择 是因为 为了提供更好的兼容性.
(我想没有人会提交真正的js代码到服务端 然后用服务端js引擎去解析执行吧?
即使真有这种需求 也可以在js代码外包一层 json格式的 wrapper ,
所以姑且都当作json处理应该没什么问题)
======================
唉 又一篇蛮纠结于无聊细节的短文 就这样结束了
如有不对 还请斧正 谢谢了.
引用
哥哥,我用prototype,都封装好了,这个东西跟我一毛钱关系也没有我用jQuery,这些也和我一毛钱关系也没有。
我说的是 response的东西 你和 下一站怎么不仔细看帖子呢
你的意识是 jquery 能够帮你在 java /php/.net 里自动的加上类似
response.setHeader(".....") 这类代码吗???
我用jQuery,这些也和我一毛钱关系也没有。
1 服务端需要返回一段普通文本给客户端
2 服务端需要返回一段HTML代码给客户端
3 服务端需要返回一段XML代码给客户端
4 服务端需要返回一段javascript代码给客户端
5 服务端需要返回一段json串给客户端
================================
对于每一种返回类型 规范的做法是要在服务端指定 response的contentType 的.
(当然 不指定绝大多数情况下也没什么问题 尤其是返回"非xml"的时候)
普通文本 : text/plain HTML代码 : text/html XML代码 : text/xml
以上三个可以说是毫无争议的, 也没什么值得讨论的,
但是另外两种情况 就要注意一下了.
javascript 的 contentType 按最标准的写法 应该是 application/javascript.
而常用的 text/javascript 已经被 rfc定义为废弃的.
(参见 rfc4329)
但是 在这里暂时不建议使用 application/javascript .
大家还是继续使用 text/javascript 为好.
因为很多老旧浏览器并不支持 application/javascript .
而所有浏览器都支持 text/javascript.
在标准和广泛的兼容性之间 还是暂且选择后者吧.
json 的 contentType 常见写法有 : text/json & text/javascript .
但是 这个 text/json 其实是根本不存在的,
而 text/javascript 在有些时候客户端处理起来会有歧义.
对于json的contentType , rfc里定义的标准写法是 :application/json.
(参见 rfc4627)
在这里毫无疑问 我们应该选择标准写法的 application/json.
======================
也许有人会问, 设置这些有什么用呢?
以前一些程序没有设置这些东西 运行的也很好啊.
首先必须承认的一点是, 这些信息 在目前绝大多数情况下 确实不设置也可以.
但是这种做法是不规范不标准的.
未来对于复杂的ajax应用 ,不规范的行为是会带来很大的隐患.
举个例子.
对于同样的内容 可以有下面的3种形式
html形式
<script type="text/javascript"> var user = { name : "Tom", age : 12 }; </script>
对于 html 形式,客户端得到数据后,往往是对其做dom操作.
javascript形式
var user = { name : "Tom", age : 12 };
对于 javascript形式,往往是对其做eval操作:
eval(responseText);
json形式
{ name : "Tom", age : 12 }
对于 json形式,往往是对其做 eval操作之后 赋值给某变量:
var clientVar= eval(responseText);
客户端拿到不同形式的代码 所要做的工作是不一样的.
如果没有设置 contentType 客户端很难判断 返回的数据是什么, 该怎么处理.
==========================
另外,对于返回信息,如果不设置contentType,web服务器往往会给返回的内容添加一个"默认的contentType",
但是这个"默认"会根据服务器的不同 以及web应用配置的不同而不同.
而浏览器对于没有足够头信息的返回值 也会做出"某些默认行为(打开 或下载 或报错".
总之 不同浏览器 不同的浏览器设置 结果可能是不一样的 无法把控.
也就是说 当我们不指定正确的contentType时, 我们所能做的只能是祈祷 在所有环境中, 程序的表现是一致的,
但是与其"祈祷"不如我们亲自把这些信息加上来得可靠.
所以 正确设置返回信息的 contentType 还是很有必要的.
======================
总结 & 建议 :
1.
服务端 向 客户端 发送 JSON数据 时:
Content-Type = 'application/json;charset=UTF-8'
2.
服务端 向 客户端 发送 JS 代码 时:
Content-Type = 'text/javascript;charset=UTF-8'
3
服务端 判断 客户端 提交的是否是 JSON数据 时 :
Content-Type = 'application/json;charset=UTF-8'
Content-Type = 'text/json;charset=UTF-8'
Content-Type = 'text/javascript;charset=UTF-8'
Content-Type = 'application/javascript;charset=UTF-8'
只要 Content-Type 满足上面4个条件中的 任意一个时,就可以认为提交的数据是 JSON数据.
之所以要提供4种选择 是因为 为了提供更好的兼容性.
(我想没有人会提交真正的js代码到服务端 然后用服务端js引擎去解析执行吧?
即使真有这种需求 也可以在js代码外包一层 json格式的 wrapper ,
所以姑且都当作json处理应该没什么问题)
======================
唉 又一篇蛮纠结于无聊细节的短文 就这样结束了
如有不对 还请斧正 谢谢了.
评论
15 楼
gongmingwind
2010-01-27
需要经常总结
14 楼
xzkcz
2009-02-24
很全面,很实用,学习了。。。
13 楼
Snow_Young
2009-02-01
感觉全冠清是在反嘲下一站童鞋。
12 楼
shhbobby
2009-02-01
支持,收藏
11 楼
xiaonian1986
2009-01-29
呵呵,支持一下
10 楼
lgn21st
2009-01-21
好文,收藏之...谢谢小胖分享
9 楼
zcfg
2009-01-21
严谨、远见
8 楼
yingwuhahahaha
2008-12-11
请问小胖,设置了正确的response类型和不设置有什么区别呢?我是指对用ajax方式请求的情况下。。
7 楼
qichunren
2008-12-11
flash文件(swf)contentType是什么?
application/x-shockwave-flash
这个不行
application/x-shockwave-flash
这个不行
6 楼
southgate
2008-12-10
不错 这种细节很体现功力
5 楼
fins
2008-12-10
全冠清 写道
引用
哥哥,我用prototype,都封装好了,这个东西跟我一毛钱关系也没有我用jQuery,这些也和我一毛钱关系也没有。
我说的是 response的东西 你和 下一站怎么不仔细看帖子呢
你的意识是 jquery 能够帮你在 java /php/.net 里自动的加上类似
response.setHeader(".....") 这类代码吗???
4 楼
全冠清
2008-12-10
引用
哥哥,我用prototype,都封装好了,这个东西跟我一毛钱关系也没有
我用jQuery,这些也和我一毛钱关系也没有。
3 楼
花花公子
2008-12-10
response header是render :json或者render :update的时候干的事情。
2 楼
fins
2008-12-10
小弟弟
我很好奇 prototype 啥时候出 服务端的代码了?
prototype 在 request 的header 里设置了 contentType ,
response header 它也能管?
下一站同学 显然 你这次的抬杠又失败了
我很好奇 prototype 啥时候出 服务端的代码了?
prototype 在 request 的header 里设置了 contentType ,
response header 它也能管?
下一站同学 显然 你这次的抬杠又失败了
1 楼
下一站,火星
2008-12-10
哥哥,我用prototype,都封装好了,这个东西跟我一毛钱关系也没有
发表评论
-
HTML5 与 ”性工能“障碍
2012-12-13 18:08 9526HTML5 与 ”性工能“障碍 最近看了@王淮Harr ... -
聊聊 iOS 5 和 iOS 6 在HTML5 canvas渲染上的差异
2012-09-13 18:40 5950我录制了一段iphone4s 下 ios 5 和 ios 6 ... -
尝试挑战 running panda , HTML5的跑酷类游戏(开发中)
2011-08-01 00:02 5987我业余时间一直在尝试用HTML5 在ios平台上开发webga ... -
移动互联网 与 Web标准化技术
2011-07-14 19:54 3655移动互联网 与 Web标准化技术 ... -
为什么我喜欢safari 胜过chrome和ff?
2011-07-04 00:35 7789抛下IE不谈,目前在浏览器市场里 最受欢迎的莫过于chrome ... -
欢迎参加 "移动平台HTML5动画性能大赛"
2011-03-31 11:38 3768移动平台HTML5动画性能大赛 注 : 此页面为临时页面 待 ... -
为什么在今天,我要选择HTML5 (上) 【此文标题党,还是别看了】
2011-03-30 16:19 3998当初苹果禁止Flash登陆iOS设备时,曾经引起过一场“HTM ... -
HTML5游戏开发入门实例<脆弱的马里奥>
2011-03-14 20:10 10129HTML5游戏开发入门实例<脆弱的马里奥>: ht ... -
3月26号,北京,我将做一期HTML5游戏开发的技术讲座,欢迎参加.
2011-03-11 11:57 21343月26号,我将去北京做一次"html5游戏开发入门 ... -
w3ctech 2011 - 拥抱HTML5 技术大会即将召开,欢迎报名
2011-03-03 23:46 1636w3ctech 2011 - 拥抱HTML5 技术会议将于4月 ... -
[新增视频]我在<当HTML5来敲门>技术沙龙上做的一个关于HTML5游戏开发的分享
2011-02-27 11:03 1917我在2月26号的<当HTML5来敲门>技术沙龙上做 ... -
说说 iOS safari在retina屏下显示图像的原理
2011-02-24 17:05 8213我在 简析 HTML5 canvas在retina屏(视网膜屏 ... -
一个 HTML5 编写的 简谱播放程序
2011-02-17 15:14 3834一个 HTML5 编写的 简谱播放程序 : http:// ... -
试用了一下 HP touchPad ,有点小失望.
2011-02-16 12:57 2802我手里的这台机器是 工程样机. 从样机来看, 这台平板并不出色 ... -
简析 HTML5 canvas在retina屏(视网膜屏幕,如iphone4)设备上的优化(更新原理)
2011-02-11 04:01 9575随着iphone4 的推出, retina ... -
[更新,bug修复了]chrome开启canvas 2D GPU加速后, clearRect的一个严重bug.
2011-01-24 15:54 9815最新版的 chromium. 已经修复了这个bug 经过进一 ... -
我也来重复造个轮子吧 ,发布一个利用原型,在Javascript中实现类机制的简单框架: GT-Class
2011-01-07 11:23 3449我也来重复造个轮子吧 ,发布一个利用prototype(原型, ... -
关于"GPU加速"的简单问答.
2011-01-05 22:34 2743如今使用GPU来代替CPU进 ... -
求助:用这样的方式写Kissy组件,可行吗?(Kissy推荐的方式是怎样的?)
2010-12-29 09:43 2032看了Kissy自带组件的代码,又看了你在D2上的PPT , 看 ... -
简单聊一聊百度的开源JS库:Tangram
2010-12-24 12:20 9502简单聊一聊百度的开源JS库:Tangram 最近百度开源了 ...
相关推荐
http中的contentType和responseType: contentType的主要类型和responseType的类型
在实际开发中,可以结合使用以上方法来解决Ajax中文乱码问题。例如,可以使用jQuery的`$.ajax`方法,设置`contentType`和`dataType`属性,以及在成功回调函数中处理响应数据: ```javascript $.ajax({ url: 'your-...
AJAX(Asynchronous JavaScript and XML)是一种在无需重新...在实际开发中,开发者应当根据服务器端的要求和数据传输的需要,正确设置contentType,并将JavaScript对象序列化为JSON字符串,以确保数据交互的顺利进行。
**Ajax应用开发典型实例** Ajax(Asynchronous JavaScript and XML)技术是现代Web应用程序中的关键组成部分,它允许在不刷新整个页面的情况下与服务器进行交互,提高了用户体验。本教程将深入探讨如何利用Ajax技术...
在进行Web开发时,我们经常会遇到Ajax GET请求发送中文参数时出现乱码的问题。这个问题主要源于HTTP协议在处理非ASCII字符时的编码不一致。在本文中,我们将深入探讨这个问题,以及如何通过不同的方法来解决它。 ...
在Java Web开发中,使用Ajax进行异步数据交互时,经常会遇到中文乱码的问题。这主要涉及到字符编码的处理,特别是当Ajax请求发送的数据包含中文字符时。以下是两种常见的解决方法: **方法一:使用`encodeURI`进行...
ASP.NET 中 Response.ContentType 类型汇总 ASP.NET 中的 Response.ContentType 属性用于确定输出的文件类型,告诉浏览器如何处理服务器返回的数据。不同的文件类型对应不同的 ContentType,今天我们来总结 ASP...
在Web开发中,Ajax、JSP和Servlet是三个非常重要的技术。Ajax(Asynchronous JavaScript and XML)用于在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容,从而提升用户体验。JSP(JavaServer Pages)是...
最近在做项目交互的时候,刚开始向后台传递数据返回 415 ,后来百度添加了 contentType:“application/json“ 之后返回400,然后把传输的数据格式改为json字符串就传输成功了,现在我们来看看 contentType:...
此外,跨域、缓存、安全、状态管理等问题也是Ajax开发中常见的挑战。正确设置请求头(如`Access-Control-Allow-Origin`),理解并使用缓存策略(如`cache: false`),以及妥善处理异步操作的顺序,都是确保Ajax成功...
在实际应用中,我们常常会遇到Ajax与服务器交互时出现中文乱码的问题,尤其是在发送和接收中文数据时。这个问题主要涉及到字符编码的处理,解决起来需要对HTTP协议、字符编码原理以及Struts框架的工作机制有一定的...
2. **保持一致性**:在同一个项目中,最好让`pageEncoding`和`contentType`中的`charset`保持一致,避免出现因编码不匹配导致的问题。 3. **使用meta标签声明字符集**:除了在JSP页面中通过`contentType`指定字符集...
Java获取文件ContentType案例 Java获取文件ContentType案例主要介绍了Java获取文件ContentType的三种方式,具有很好的参考价值,...在实际开发中,推荐使用方式二,使用MimetypesFileTypeMap来获取文件的ContentType。
在上面的代码中,我们设置了Response.ContentType为application/ms-excel,以便将数据作为Excel文件发送到客户端。 Excel文件 Excel文件是一种常用的电子表格文件格式,广泛应用于数据分析和处理。Excel文件可以...
Ajax 2.0 和 Ajax 3.5 是该技术的不同版本,它们在Web开发中扮演着重要角色,尤其是在提升用户体验方面。 Ajax 2.0 主要是基于微软的ASP.NET框架,它是对早期Ajax技术的一次重大升级。在ASP.NET 2.0中,微软引入了...
在Web开发中,Ajax(Asynchronous JavaScript and XML)技术被广泛应用于页面异步更新,提供更流畅的用户体验。jQuery库简化了Ajax操作,它内置了一系列强大的Ajax方法,其中包括Ajax过滤器功能,使得在处理数据时...
本教程将详细介绍如何解决AJAX中文乱码问题,以在Windows Server 2008环境下为例,但原理适用于其他操作系统。 首先,我们需要理解乱码产生的原因。乱码通常是由字符编码不一致引起的。服务器和客户端之间传输的...
在网页开发和服务器端编程中,正确设置`ContentType`能够确保数据以正确的格式被浏览器解析,从而避免出现乱码或其他显示问题。本文将深入探讨`ContentType`的用途、常见类型以及如何在不同环境中进行设置。 `...
在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过JavaScript发起异步请求,与服务器进行数据交换,从而实现动态加载内容的效果。然而,...
Ashx处理程序提供了灵活的数据处理方式,适用于Ajax请求,而VS2010提供了良好的开发环境支持。通过创建和配置Ashx处理程序,以及编写相应的Ajax客户端代码,开发者可以轻松地构建交互性强、响应快的Web应用。在实际...