当前位置:编程学习 > JS >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,