Chinaunix首页 | 论坛 | 博客
  • 博客访问: 83384
  • 博文数量: 28
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-12 13:54
文章分类

全部博文(28)

文章存档

2011年(1)

2010年(8)

2009年(19)

我的朋友

分类:

2009-12-28 12:49:45


    当为web服务器输出的内容指定Content-Type为text/html时,浏览器会对内容做一些额外的转换工作,比如"""这样 的实体形式就会被替换成最终的字符(双引号")。这在普通情况下并不会引起什么问题,但是不幸的是如果你采用了JSON格式来传输数据,例如: {status:0;data:"content"data"}这样的格式,当"被替换成"后,Javascript就 会得到一个错误的数据格式,因为这时候Javascript拿到的数据就变成了{status:0;data:"content"data"}。

    这时候,你可以设置Content-Type为text/x-json来解决此问题,但是text/x-json有可能引起一些浏览器兼容性上的问题(一 些浏览器会提示下载Content-Type为text/x-json的内容),而更好的做法就是设置Content-Type为text/plain。 不过即使这样也并没有完美的解决问题,考虑这样一种情况,你需要上传文件但是你并不想刷新上传页面,这时候一般的做法就是让form的target指向一 个Iframe,代码如下:
   

    当accept.php接收请求并处理完成返回一段JSON数据后问题就发生了,因为accept.php输出的内容被定向到了iframe,而在iframe里浏览器会自动地给数据上加上
标记,这时候JSON又出现格式错误了。

    最终的解决方法就是,在JSON传输时指定Content-Type为text/plain,但是遇到上面提的文件上传情况,就应该指定Content-Type为text/html。
阅读(2864) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~