逛奔的蜗牛

我不聪明,但我会很努力

   ::  :: 新随笔 ::  ::  :: 管理 ::
有的时候,因为需要使用this,但是又被其他上下文给占用了,这时需要使用其他变量来代替this,如self(不成文的规矩而已).
function Person(name, age) {
    this.name = name;
    this.age = age;
    self = this; // 这里在Safari, Firefox里能正常运行,但是在IE中会报错,提示this未初始化
   
    this.foo = function() {
        var self = this; // 这里在Safari, Firefox, IE里都能正常运行.
        setTimeout(function() {
            alert(self.name); // 这里如果使用this.name会报错
        }, 1000);
    }
}

服务器端返回JSON格式的字符串(无论是Servlet,JSP,还是PHP等)
"{name: \"your name\", age: 23}"

如果在浏览器端使用普通文本方式获得此字符串,然后使用eval转换成JSON对象,没问题:
var jstr = "{name: \"your name\", age: 23}";
var obj = eval("(" +  jstr + ")"); // 正常得到JSON对象,这里加上( 和 )是为了防止在一些浏览器里出错.

但如使用jQuery的$.getJSON()想取得上面的字符串的JSON对象,不会报错,但是也得不到JSON对象,必须把上面的属性名也用引号引起来才能正常的得到JSON对象,如下格式:
"{\"name\": \"your name\", \"age\": 23}"

还有一个小问题,如your name这个字符串中有双引号,在转换成JSON对象时会出错,所以事先最好把your name中的双引号转换成单引号,以防出错。

posted on 2010-09-06 03:40 逛奔的蜗牛 阅读(507) 评论(0)  编辑 收藏 引用 所属分类: 其他编程

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理