beforeSend in $ .getJSON

Qui*_*Par 11 javascript jquery callback

如何beforeSend$.getJSON(跨域)中使用回调.

更具体地说$.getJSON,调用是一个YQL服务

select*from html url =" http://www.yahoo.com "

jps*_*ons 34

beforeSend的唯一目的是获取原始XHR对象(通常用于在其上设置HTTP头).你不需要它来踢开旋转器之类的东西.这里的代码(来自@petersendidit):

jQuery.ajax({
    url: url,
    dataType: "json",
    beforeSend: function(){
        $('.loading').show();
    }
});
Run Code Online (Sandbox Code Playgroud)

最好是这样写的:

$('.loading').show();
jQuery.ajax({
    url: url,
    dataType: "json"
});
Run Code Online (Sandbox Code Playgroud)

这意味着,除非您需要jQuery.ajax中的任何高级选项,否则您使用jQuery.getJSON的原始计划就可以了.所以你说你想要显示加载GIF,就这样做而忘掉beforeSend.

jQuery(".someSpinnerImage").show();
jQuery.getJSON("http://www.somedomain.com/someurl", function(data) {
    jQuery(".someSpinnerImage").hide();
    // Do something with data
}
Run Code Online (Sandbox Code Playgroud)


Pet*_*dIt 6

$ .getJSON只是$ .ajax函数的快捷方式

get: function( url, data, callback, type ) {
   // shift arguments if data argument was ommited
   if ( jQuery.isFunction( data ) ) {
      callback = data;
      data = null;
   }
   return jQuery.ajax({
       type: "GET",
       url: url,
       data: data,
       success: callback,
       dataType: type
   });
}, 
getJSON: function( url, data, callback ) {
    return jQuery.get(url, data, callback, "json");
},
Run Code Online (Sandbox Code Playgroud)

因此,如果你需要做更多的事情,那么基本的getJSON调用只需使用$ .ajax,如:

jQuery.ajax({
    url: url,
    dataType: "json",
    beforeSend: function(){
        $('.loading').show();
    }
});
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用$ .ajaxSend$ .ajaxComplete函数,但这将使每个ajax调用之前和之后调用这些函数.