jQuery的jQuery.post()的第四个参数需要指定返回的数据类型

December 18th, 2008 by Dream☆Wing Leave a reply »

jQuery.post( url, [data], [callback], [type] )
正如标题所说,如果返回的是json格式的话,务必要指定type=‘json’

否则在callback的函数中还按照json格式来调用数据的话,极有可能会为undefined

例如:

function delete_all()
{
	if (!confirm('确定删除?'))
	{
		return false;
	}

	var mid = [];

	$("input:checked").each(function(){
		mid.push($(this).val());
	});

	var sendurl = 'batch.guestbook.php?action=delete';

	$.post(sendurl, {'mid[]':mid}, function(json){
		if (json.info != 'ok') {
                      alert(json.info);
                      return;
		}

	   $("input:checked").each(function(){
			$(this).parent().parent().hide('slow', function(){
			   $(this).remove();
		   });
		});
	});

	return false;
}

是的,上面这段代码无论post返回是的什么(即使是{”info”:”ok”}),都会提示undefined

原因就在于没有指定type返回数据的类型,没有指定的话会自动根据类型被认为HTML或XML(?)

嘛,某API中文手册少了第4个参数急需修正哇,以后还是多看看官网的document好了

附:正确的参数设置:

$.post(sendurl, {'mid[]':mid}, function(json){
		if (json.info != 'ok') {
                      alert(json.info);
                       return;
		}

	   $("input:checked").each(function(){
			$(this).parent().parent().hide('slow', function(){
			   $(this).remove();
		   });
		});
	}, 'json');

PS:刚在官方的callback中看到个例子

$.postJSON = function(url, data, callback) {
	$.post(url, data, callback, "json");
};

既然$.getJSON都集成进去了,为什么$.postJSON不集成进去呢。。。
还是说已经集成了只是document里没有列出来而已。。。。

  • Share/Save/Bookmark
Advertisement
Post comment as twitter logo facebook logo
Sort: Newest | Oldest