你的 alert(guala); 显示的是什么?

解决方案 »

  1.   

    利用正则判断
    //判断返回值不是 json 格式
                        if (!data.match("^\{(.+:.+,*){1,}\}$"))
                        {
                            //普通字符串处理
                        }
                        else
                        {
                            //通过这种方法可将字符串转换为对象
                            var rdata = jQuery.parseJSON(data);
                        }
                        
      

  2.   

    alert(guala)可以正常输出,无论是不是json数据
    但是如果不是json数据,下面的alert(data),无法输出
      

  3.   

    用正则半段无效,例如数据是下面的
    {"state":"00","desc":"ok","src":"index.html","width":330,"height":330,"id":525,"tishi":null,"zhuangtai":1}
    这个正则还是会判定为不是json数据
           if (!data.match("^\{(.+:.+,*){1,}\}$"))
                        {
                            //普通字符串处理
                        }
    这个会成立
      

  4.   

    不是 json 自然会转换失败啦
    如果用正则检查他是否正确,考虑到 json 中可能有对象数组多重嵌套。规则串并不很好写
    不如直接用 eval 去转啦  s = '{1,2,3]';
      try {
        d = eval('(' +s +')');
      }catch(e) {
        d = '失败';
      }
      alert(d);