一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

nodejs中getJSON 用法

时间:2012-05-05 编辑:简简单单 来源:一聚教程网

特点:
* 单线程事件模型,简单高效
* 基于活跃的高性能V8引擎
* 社区活跃,组件丰富

安装node.js:
sudo yum install gcc-c++ openssl-devel
wget http://nodejs.org/dist/node-v0.4.0.tar.gz
./configure; make; sudo make install

安装NPM(node的包管理器):

curl http://npmjs.org/install.sh | sh


安装好nodejs之后我们来看一个简单的测试

node端片段:

 代码如下 复制代码
app.get(
    '/sayHello',
    function(req, res){
        res.end(JSON.stringify({testkey:"这是一个Value诶"}));
    }
);

就是返回一个json格式的数据,然后再client端显示出来

但是在使用jQuery中的时候闹了很多幺蛾子

首先是:

client片段

 代码如下 复制代码
$.get('/sayHello', function(data){ alert(data.testkey); }, 'json');

一切正常。

后来发现jQuery有个专门异步获取JSON的方法getJSON于是想测试下。。

首先是:

client片段

 代码如下 复制代码
$.getJSON(
    '/sayHello',
    function(data){
        alert("JSON Data: " + data.testkey);
    }
);

结果Firebug观察请求被调用了。但是回调没有执行。。。百度之。。。发现有人遇到类似问题需要在url后面加上callback=?的参数

client片段

 代码如下 复制代码
$.getJSON(
    '/sayHello?callback=?',
    function(data){
        alert("JSON Data: " + data.testkey);
    }
);

回调可以执行了。。但是data.testkey值为undefined。。。

在群里询问,有人说当返回头木有设置的时候,jquery有时会出现得到的结果无法识别为json的现象,于是加上头

node端:

 代码如下 复制代码
app.get(
    '/sayHello',
    function(req, res){
        res.writeHead(200, {"Content-Type": "application/json"});
        res.end(JSON.stringify({testkey:"这是一个Value诶"}));
    }
);

再次测试,结果正常鸟。。O(∩_∩)O

但是看着加个 callback=? 这样的尾巴很不爽。。于是。。

又在群里打听。有人说getJSON必须让回调成为第三个参数,于是尝试

 代码如下 复制代码
$.getJSON(
    '/sayHello',
    {},
    function(data){
        alert("JSON Data: " + data.testkey);
    }
);

也成功。。

一切正常

查看jQuery代码

 代码如下 复制代码
getJSON: function( url, data, callback ) {
    return jQuery.get( url, data, callback, "json" );
},

按理说getJSON的行为应该和get的行为一样,为避免出现乱码我们在返回头json安心加上"Content-Type"以绝后患。

细心的朋友会发现我在最后面加了一句 在返回头json安心加上"Content-Type" ,这证明和ajax有一点像啊,返回值可能不支持中文出现乱码,所以大家要记住哦。

热门栏目