我正在使用getJSON
,但它没有按照预期的方式运行,WebService
正在返回xml
,甚至认为具体指定为ResponseFormat = ResponseFormat.JSON
。在互联网上阅读了一些帖子后,我发现问题是getJSON
不会将contentType
设置为application/json; charset=utf8
,而是让它成为默认值。我通过调用$.ajax
并将contentType
设置为application/json; charset=utf8
来验证它。所以我想查看jQuery-1.9.1.js
并了解getJSON
是如何实现的。这是文件中的确切签名......
getJSON: function( url, data, callback ) { // line 8107 as of 1.9.1.js
return jQuery.get( url, data, callback, "json" );
}
所以,我进一步研究了jQuery.get
是如何实现的。但令我惊讶的是,我找不到任何???我看了很多次,但文件中没有定义get
来获取4
个或更多参数?怎么会这样?如果未定义,get
和扩展名getJSON
(以及getScript
)的调用方式如何?任何人都可以检查并验证这个吗?
ps:请不要告诉我我可以使用ajaxSetup
等等,还有其他方法可以做到,我知道,但令我费解的是,我找不到jQuery.get
定义,所以如何以及从何处调用它?
答案 0 :(得分:2)
ajax.js
文件的第197行是get
和post
函数的定义位置:
jQuery.each( [ "get", "post" ], function( i, method ) {
jQuery[ method ] = function( url, data, callback, type ) {
// shift arguments if data argument was omitted
if ( jQuery.isFunction( data ) ) {
type = type || callback;
callback = data;
data = undefined;
}
return jQuery.ajax({
url: url,
type: method,
dataType: type,
data: data,
success: callback
});
};
});
正如您所看到的,他们只是简单地调用jQuery.ajax
方法。
答案 1 :(得分:1)
查看:https://github.com/jquery/jquery/blob/master/src/ajax.js
具体是197-214行。
他们将get
和post
传递给jQuery.ajax()