这是什么问题? (除了冗余代码)。 $.getJSON
按预期工作。但是$.postJSON
无效。我可以通过firebug检查$.fn
,确定列出了postJSON。但是,如果我尝试调用它,我会得到一个无函数定义的错误。
jQuery.fn.getJSON = function(path, opts){
this.extend(opts, {
url: path,
dataType: 'json',
type: 'GET'
});
var invalid = opts.error;
opts.error = function(xhr, status){
var data = $.httpData(xhr, 'json');
if (invalid)
invalid(data);
}
this.ajax(opts);
};
jQuery.fn.postJSON = function(path, data, opts) {
this.extend(opts, {
url: path,
data: data,
dataType: 'json',
type: 'POST'
});
var invalid = opts.error;
opts.error = function(xhr, status){
var data = $.httpData(xhr, 'json');
if (invalid)
invalid(data);
}
this.ajax(opts);
};
答案 0 :(得分:5)
jQuery.fn是对jQuery对象原型的引用,所有jQuery构造对象都可以访问它,因此该函数变为jQuery.prototype.postJSON。如果要将其声明为静态方法,则不应指定“.fn”
jQuery.fn.postJSON = function(){};
alert(typeof jQuery.prototype.postJSON ); // function
alert(typeof jQuery.postJSON); // undefined
jQuery.getJSON是一个'函数'的原因是因为它是jQuery对象的本机方法(它不是你要声明的东西,它是jQuery.prototype.getJSON);