使用动态数据更新AJAX成功

时间:2017-12-26 19:44:02

标签: jquery ajax

我对JavaScript不是很了解,但我正努力改善自己。我正在重构一个有两个几乎完全相同的AJAX调用的脚本。两者之间的唯一区别是成功函数内部正在做什么。

如果我想使用一个AJAX函数而不是2,那么我将如何进行注入'一个或另一个代码块成为单个成功函数?

这就是我现在所拥有的。

$(".one").click(function() {
  $.ajax({
    url      : "upload.asp",
    type     : "POST",
    data     : $("#upload").serialize(),
    dataType : 'json',
    cache    : false,
    success  : function(data) {
      // do some stuff here
    }
  });
});

$(".two").click(function() {
  $.ajax({
    url      : "upload.asp",
    type     : "POST",
    data     : $("#upload").serialize(),
    dataType : 'json',
    cache    : false,
    success  : function(data) {
      // do some different stuff here
    }
  });
});

2 个答案:

答案 0 :(得分:4)

以下内容可能会有所帮助:

methodOne = function(data) {
  // do some stuff
};
methodTwo = function(data) {
  // do some different stuff
};

$(".one, .two").click(function() {
  var callback = function(){};
  if ($(this).hasClass('one')) {
    callback = methodOne;
  else if ($(this).hasClass('two')) {
    callback = methodTwo;
  }
  $.ajax({
    url      : "upload.asp",
    type     : "POST",
    data     : $("#upload").serialize(),
    dataType : 'json',
    cache    : false,
    success  : callback
  });
});

答案 1 :(得分:0)

你可以做的是为Ajax调用创建一个新函数,并传入作为参数点击的元素,如下所示:

function MyCall(el) {
  $.ajax({
    url      : "upload.asp",
    type     : "POST",
    data     : $("#upload").serialize(),
    dataType : 'json',
    cache    : false,
    success  : function(data) {
      if(el == "one"){
        //Do something
      }
      if(el == "two"){
        //Do something else
      }
    }
  });
};

然后在你的点击功能中调用它:

$(".one").click(function() {
  MyCall("one");
});

$(".two").click(function() {
  MyCall("two");
});