var response = eval("("+request.responseText+")") 解析成josn出了问题,急啊~~

liaoyunt07 2008-11-21 09:36:18
if(request.readystate==4)
{
if(request.status==200)
{
var response = eval("("+request.responseText+")");//解析返回的数据


在request.responseText里有大量的标签(例如:<P><IMG src="show.aspx/2pz34260m[1].jpg?InfoDtID=37"></P>有这样的内容)
解析时候出了问题
问各位大侠,谁能帮我解决啊~~


现在急着用啊,

在线等待高手

...全文
1142 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
neo_yoho 2008-11-21
  • 打赏
  • 举报
回复
[div].innerHTML = request.responseText
不行就把 <和>替换成< > 再innerHTML
liaoyunt07 2008-11-21
  • 打赏
  • 举报
回复
我查看了一下~~~
主要是value里有双引号,受影响~~`

要是把双引号换成单引号,

显示出来的值是这个<IMG src='show.aspx/shenzhen[1].jpg?InfoDtID=41'>

我要的是一张图片~~

不知道有什么办法可以解决
cgisir 2008-11-21
  • 打赏
  • 举报
回复

<script>
String.prototype.unescapeHtml = function(){
return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');
}
//JSON
/*reponseText得到的应该是这样的格式就对了
你的格式 {img:\'<P><IMG src="show.aspx/2pz34260m[1].jpg?InfoDtID=37"></P>\', img2: \'<P><IMG src="show.aspx/2pz34260m[1].jpg?InfoDtID=38"></P>\'}
转变后是这样的 {img:'<P><IMG src="show.aspx/2pz34260m[1].jpg?InfoDtID=37"></P>', img2: '<P><IMG src="show.aspx/2pz34260m[1].jpg?InfoDtID=38"></P>'}
*/
var str = '{img:\'<P><IMG src="show.aspx/2pz34260m[1].jpg?InfoDtID=37"></P>\', img2: \'<P><IMG src="show.aspx/2pz34260m[1].jpg?InfoDtID=38"></P>\'}';

eval('var rs='+str.unescapeHtml());
//这句其实就是 var rs = {img:'<P><IMG src="show.aspx/2pz34260m[1].jpg?InfoDtID=37"></P>', img2: '<P><IMG src="show.aspx/2pz34260m[1].jpg?InfoDtID=38"></P>'};

alert('rs.img='+rs.img+'\nrs.img2='+rs.img2);

</script>
参考下
neo_yoho 2008-11-21
  • 打赏
  • 举报
回复
解析时候出了问师,老是说"缺少"}"


你先单独看那个生成的页面 看生成的对不对 都对了再想编码解码咯
liaoyunt07 2008-11-21
  • 打赏
  • 举报
回复
谢谢各位的建议

写了一个json的类,返回的是一个json格字的字符串
解析时候出了问师,老是说"缺少"}"

我忘了说一个重点json是key:value组成
我是说在value里有大量的标签(例如:<P><IMG src="show.aspx/2pz34260m[1].jpg?InfoDtID=37"></P>有这样的内容)
解析普通文字没有错误

cloudgamer 2008-11-21
  • 打赏
  • 举报
回复
用xml吧
  • 打赏
  • 举报
回复
或者在服务器端用escape
传过来后用unescape(xmlhttp.responseText)看看
魔豆爸 2008-11-21
  • 打赏
  • 举报
回复
1、明確自己做什麽,從樓主返回結果中能看出沒有必要使用eval轉換
2、eval是將後臺返回的結果轉換成js對象,即json。這是目前較流行和常用的方式。當然你也可以後臺生成js代碼字符串,返回前臺用eval動態執行
3、既然返回的結果中包含大量html標籤,則返回request.responseText即可
4、如果想返回json,則後臺應構造符合json規範結構的字符串。再用eval轉換。
5、完了
  • 打赏
  • 举报
回复
你也可以这么做,在返回来后做一个转换
goldensand001 2008-11-21
  • 打赏
  • 举报
回复
关注,帮顶!
lengssmm 2008-11-21
  • 打赏
  • 举报
回复
我也来学习一下,关注这个问题,帮你顶一下
liaoyunt07 2008-11-21
  • 打赏
  • 举报
回复
我要解析普用的文字没有错误~~

2楼你说的(“在服务器那里encode一下,然后在JS的eval前,先decode一下 ”)
是指Server.HtmlEncode? 在js的eval前decode一下,怎么写
阿云ivan 2008-11-21
  • 打赏
  • 举报
回复
应该是包含了非法字符


encodeURI
decodeURI
处理
varlj 2008-11-21
  • 打赏
  • 举报
回复
在服务器那里encode一下,然后在JS的eval前,先decode一下

或者把JSON字符串贴出来,看看有没有错

87,915

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧