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里没有列出来而已。。。。