使用$ .post调用promises的正确方法是什么,同时仍然指定数据类型" json" ?
我做了一些测试,但得到了我不完全理解的结果。
1) 这样可以仅在$ .post:
中的函数内处理数据$.post( "foo.net/api", {a: "this", b: "that"}, function(data){
$('body').html(data);
}, "json");
2) 这将返回格式错误的数据,仅在.done:
中的函数内处理数据$.post( "foo.net/api", {a: "this", b: "that"}, "json")
.done(function(data){
$('body').html(data);
});
3) 这似乎也有效,在post中处理数据然后在.done中处理数据:
$.post( "foo.net/api", {a: "this", b: "that"}, function(data){
$('body').html(data);
}, "json")
.done(function(data){
$('body').append(data);
};
4) BIZARRELY(至少对我来说)这也有效,在帖子中有一个空函数,然后处理完成内的数据:
$.post( "foo.net/api", {a: "this", b: "that"}, function(){
// empty function
}, "json")
.done(function(data){
$('body').html(data);
};
最后一次测试让我很困惑。为什么post中的空函数允许.done访问并使用json数据类型?虽然没有函数(如第二个例子中所示)留下.done与未格式化的输出?
那么如何指定" json"数据类型是否正确?
谢谢。
答案 0 :(得分:0)
数据类型将是post函数的最后一个参数
$.post( "test.php", { name: "John", time: "2pm" }, 'json')
.done(function( data ) {
// do something with response data
})
.always(function() {
// do something afterwards
});