Если вы посмотрите на .load
, вы увидите, что он не передает объект в .ajax
, даже если вы передаете один в .load
:
if ( params ) {
...
} else if ( typeof params === "object" ) {
// it will execute this
params = jQuery.param( params, jQuery.ajaxSettings.traditional );
Он вызовет jQuery.params
, который возвращает строку , и объект не может быть объединен со строкой. Таким образом, он отправит "name=John&age=28"
без объединения хеш-объекта.
Это не относится к $.get
, потому что эта функция напрямую передает объект:
jQuery.each( [ "get", "post" ], function( i, method ) {
jQuery[ method ] = function( url, data, callback, type ) {
...
return jQuery.ajax({
type: method,
url: url,
data: data, // passed directly to $.ajax which takes care of merging $.ajaxSetup stuff
success: callback,
dataType: type
});
};
});