jQuery-吐槽getJSON
今天尝试玩了吧nodeJS 结果把自己玩了一把(将来可以做wp游戏的webservice端。。)
记录下来,以绝后患。。
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"以绝后患。
摘自 LightingCui
补充:web前端 , JavaScript ,