浏览 8871 次
锁定老帖子 主题:jQuery的$.post方法的一个bug
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-25
其实问题很简单,记录一下。$.post现在支持了第3个参数,即返回数据的类型,如果server在返回json数据,那么一种简单的做法: $.post('json.php', {n:1}, function(data){ alert(typeof data); alert(data.value); }, 'json');
如果没有参数: $.post('json.php', function(data){ alert(typeof data); alert(data.value); }, 'json');
这两种的结果是不一样的! 前者的data已经被处理为js对象,而后者的data仍然是json字符串,原因: jQuery的$.post实现: post: function( url, data, callback, type ) { if ( jQuery.isFunction( data ) ) { callback = data; data = {}; } return jQuery.ajax({ type: "POST", url: url, data: data, success: callback, dataType: type }); }, 可以看到,在没有data参数的时候,存在一个bug,type被忽略了,调用ajax方法时传递的dataType是undefined,这样type按默认的html处理,并没有被按json解析。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-11-26
不传参数的话,还是使用$.getJSON 好。
不过楼主说得这个是有点特殊。 因为涉及到第四个参数 type |
|
返回顶楼 | |
发表时间:2008-11-26
这。。这算bug么,没有参数的话也要占个位吧
|
|
返回顶楼 | |
发表时间:2008-11-27
是bug,既然已经考虑了 if ( jQuery.isFunction( data ) ) { ,那应该callback = data; 前面加个 type = callback 。
|
|
返回顶楼 | |