Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ajax加载程序有时不追加_C#_Javascript_.net_Ajax - Fatal编程技术网

C# ajax加载程序有时不追加

C# ajax加载程序有时不追加,c#,javascript,.net,ajax,C#,Javascript,.net,Ajax,我正在使用.net构建web应用程序,并使用ajax从服务器获取一些数据。 我想为每个函数创建自定义ajax加载程序,比如:如果它要删除某个东西,我想调用函数X(),如果它要保持会话活动,我根本不想加载,如果它要获取用户的数据,我想调用函数Y()。 我知道,如果我调用$(document).ajaxStart(),那么从现在起每次ajax调用启动时,都会运行相同的函数。 因为我想要不同的功能,这是我尝试的: function X() { var flag = true; $(do

我正在使用.net构建web应用程序,并使用ajax从服务器获取一些数据。 我想为每个函数创建自定义ajax加载程序,比如:如果它要删除某个东西,我想调用函数X(),如果它要保持会话活动,我根本不想加载,如果它要获取用户的数据,我想调用函数Y()。 我知道,如果我调用
$(document).ajaxStart(
),那么从现在起每次ajax调用启动时,都会运行相同的函数。 因为我想要不同的功能,这是我尝试的:

function X() {
    var flag = true;
    $(document).ajaxStart(function () {
        if (flag) {
            $('#loadDiv').show();
        }
    });
    $(document).ajaxStop(function () {
        if (flag) {
            $('#loadDiv').hide();
            flag = false;
        }
    });
我为Y()函数做了另一个,然后在ajax调用之前,我调用了X或Y。 问题是,有时加载函数不起作用,仅当我再次单击它的触发次数时,但即使它不起作用,ajax调用也会在后台运行。 有一种更好的方法可以将自定义ajax loaderr设置为其他操作?我做错了什么?

您可以创建一个for jQuery
ajax
函数,在其中处理进度:

ajax = (function ($) {
  function showProgress() { $('#loadDiv').show(); }
  function hideProgress() { $('#loadDiv').hide(); }

  function ajax(url, parameters) {
    // We don't want to mutate the state of "parameters".
    var copy = $.extend(parameters, {});

    if (copy.progress) {
      // Showing the progress.
      showProgress();

      // On completion (success or error) hiding the progress.
      if (copy.complete) {
        copy.complete = function() { 
          hideProgress(); 
          copy.complete.apply(this, arguments); 
        };
      } else {
        copy.complete = hideProgress;
      }
    }

    return $.ajax(url, copy);
  }

  return ajax;
})(jQuery);
您可以像调用
jQuery.ajax
一样调用新的
ajax
函数,但现在您可以指定一个名为
progress
的附加参数,该参数指示是否显示进度指示器:

ajax('/my/url', { 
  type: 'get',
  success: function() { ... },
  progress: true
});
作为替代方案(如果您不喜欢自定义的
ajax
函数),您可以为
jQuery.ajax
创建一个代理:

(function ($) {
  function showProgress() { $('#loadDiv').show(); }
  function hideProgress() { $('#loadDiv').hide(); }

  var ajaxOriginal = $.ajax;

  $.ajax = function(url, parameters) {
    // Same as above but you need to call "ajaxOriginal" 
    // internally instead of "$.ajax".
  };
})(jQuery);
就个人而言,我更喜欢第一种方法,因为它更透明一些


希望这有帮助。

不知道您使用的是什么JS库,代码也不完整,但您可能希望查看JSONP,这样您就可以有一个AJAX例程,并根据服务器结果调用所需的函数。