Javascript 我们怎样才能称之为Ajax;错误:函数();从成功功能手动执行功能?

Javascript 我们怎样才能称之为Ajax;错误:函数();从成功功能手动执行功能?,javascript,jquery,ajax,Javascript,Jquery,Ajax,如何从success:function手动调用error:function?可能吗? success: function(data) { response($.map(data, function(item) { if (item != "some value") { // Call error:function from here } return item; })) }, error: function(xhr,

如何从success:function手动调用error:function?可能吗?

success: function(data) {
    response($.map(data, function(item) {
      if (item != "some value") {
        // Call error:function from here 
      }
      return item;
    }))
  },
  error: function(xhr, status, error) {
    var err = eval("(" + xhr.responseText + ")");
    alert(err.Message);
  }
像这样:

success: function(data) {
    response($.map(data, function(item) {
      if (item != "some value") {
        // Call error:function from here 
      }
      return item;
    }))
  },
  error: function(xhr, status, error) {
    var err = eval("(" + xhr.responseText + ")");
    alert(err.Message);
  }
success: function(data) {
    response($.map(data, function(item) {
        if (item != "some value") {
            onError(...) 
        }
        return item;
    }))
},
error: onError


var onError = function(xhr, status, error) {
    var err = eval("(" + xhr.responseText + ")");
    alert(err.Message);
} 

顺便说一下,使用eval从来都不是一个好主意。

Ajax
error
函数在http请求失败时被调用。ajax
success
上无法触发
error
功能。请参阅API文档

success: function(data) {
    response($.map(data, function(item) {
      if (item != "some value") {
        // Call error:function from here 
      }
      return item;
    }))
  },
  error: function(xhr, status, error) {
    var err = eval("(" + xhr.responseText + ")");
    alert(err.Message);
  }

如果您想在ajax上执行特定的任务,您可以将其封装在函数中,并在ajax
success

success中调用,如果请求成功,则调用该函数

success: function(data) {
    response($.map(data, function(item) {
      if (item != "some value") {
        // Call error:function from here 
      }
      return item;
    }))
  },
  error: function(xhr, status, error) {
    var err = eval("(" + xhr.responseText + ")");
    alert(err.Message);
  }
error是请求失败时要调用的函数 因此,在这种背景下,你的问题没有意义

success: function(data) {
    response($.map(data, function(item) {
      if (item != "some value") {
        // Call error:function from here 
      }
      return item;
    }))
  },
  error: function(xhr, status, error) {
    var err = eval("(" + xhr.responseText + ")");
    alert(err.Message);
  }

但是,是的,当一个调用成功或失败时,您可能有一些共同的事情要做;我的建议是在一个单独的函数中收集所有要做的普通事情,并在success和error中调用这个普通函数

是的,就是这样。创建一个函数
onSuccess()
将当前
success
的代码移动到该函数中,并将其赋值为
success:onSuccess,error:…
,然后您也可以在不使用ajax的情况下调用它。我猜您误解了ajax中错误回调的概念。如果您在问题中添加更多细节,可能还有其他更好的选择。旁注:不确定您为什么需要进行
eval(“+xhr.responseText+”)
,但有99%的可能性,不需要进行eval就可以通过其他方式进行。
success: function(data) {
    response($.map(data, function(item) {
      if (item != "some value") {
        // Call error:function from here 
      }
      return item;
    }))
  },
  error: function(xhr, status, error) {
    var err = eval("(" + xhr.responseText + ")");
    alert(err.Message);
  }