如何将成功函数名称作为函数参数传递给AJAX调用?

时间:2018-07-23 11:52:46

标签: javascript c# jquery asp.net ajax

在这里,我试图将AJAX调用作为一个函数进行,因为我正在将成功函数名称作为函数参数传递给AJAX调用函数。

我尝试扭曲以下功能:

function ApiCallFunction(Datatext, ApiName, FunctionName) {
  $.ajax({
    url: Apiurl + ApiName,
    type: "POST",
    data: Datatext,
    contentType: "application/json",
    dataType: "json",
    success: function(data) {
      var funname = FunctionName + '("' + data + '")';
      eval(funname);
    },
    error: function(error) {
      jsonValue = jQuery.parseJSON(error.responseText);
      ErrorWhileSave(jsonValue.Message);
    },
    failure: function(response) {
      ErrorWhileSave("");
    }
  });
}

函数调用:

var datatext = {
  BillChild: {},
  BillDate: "2018-07-23T08:35:32.319Z",
  EntryTime: "2018-07-23T08:35:32.319Z",
  ExitTime: "2018-07-23T08:35:32.319Z",
  TotalTime: "2018-07-23T08:35:32.319Z",
  Total: 0,
  OtherCharges: 0,
  Discount: 0,
  TaxableAmount: 0,
  TotalTax: 0,
  GrandTotal: 0,
  RoundOff: 0,
  NetAmount: 0,
  ByCash: 0,
  ByBank: 0,
  CashReceived: 0,
  BalanceReceivable: 0,
  FirmId: 0,
  UserId: 0,
  BillId: 35,
  CustomerId: 0,
  BranchId: 0,
  BillType: "string",
  BillNo: "string",
  PaymentType: "string",
  Notes: "string",
  TaxType: "string",
  BankId: "string",
  CreatedBy: "string",
  HostIp: "string",
  BranchTransfer: "string",
  ConsultId: 0,
  SearchKey: "string",
  Flag: "SELECTONE"
};

var Datatext = (JSON.stringify(datatext));
ApiCallFunction(Datatext, "Bill_master", "ReturnFunction");

要使用的Success函数是:

function ReturnFunction(ReturnValue) {
  alert(data.data.Table1[0].BillId);
}

当我尝试alert(ReturnValue)时,它显示为object object。我还尝试了ReturnValue.data.data.Table1[0].BillId仍然无法使用这些值。 AJAX调用是成功的,并且我从中获得了价值,但是我无法将结果JSON对象传递给其他函数。

如何将JSON对象传递给其他函数?请帮助我。

3 个答案:

答案 0 :(得分:1)

您可以通过多种方法来实现自己的目标。

  

方法1 只是将功能对象分配为参数

30-40

并具有以下功能:

900 ms

致电:

function ApiCallFunction(Datatext, ApiName, onSucess,onError) {
    $.ajax({
        url: Apiurl + ApiName,
        type: "POST",
        data: Datatext,
        contentType: "application/json",
        dataType: "json",
        success: onSucess,
        error: onError,
        failure: function (response) {
            ErrorWhileSave("");
        }
    });
}
  

方法2 ,如果您碰巧有一个字符串而不是函数对象

function ReturnFunction(response){
 //assuming that response is of JSON type
 alert(response.data.Table1[0].BillId);
}

function myError(response){
 console.log(JSON.parse(response.responseText).Message);
}

通话:

ApiCallFunction(DataText,"Bill_master",ReturnFunction,myError);

答案 1 :(得分:0)

您可以传递函数地址(回调):

function ApiCallFunction(Datatext, ApiName, FunctionName) {
        $.ajax({
            url: Apiurl + ApiName,
            type: "POST",
            data: Datatext,
            contentType: "application/json",
            dataType: "json",
            success: function (data) {
                FunctionName(data);
            },
            error: function (error) {
                jsonValue = jQuery.parseJSON(error.responseText);
                ErrorWhileSave(jsonValue.Message);
            },
            failure: function (response) {
                ErrorWhileSave("");
            }
        });
    }

function ReturnFunction(data) {
   alert(data.data.Table1[0].BillId);
}

ApiCallFunction(Datatext, "Bill_master", ReturnFunction);

答案 2 :(得分:0)

在ReturnFunction中,我认为数据是未定义的,也许这应该可以工作:

function ReturnFunction(ReturnValue) {
  alert(ReturnValue.data.Table1[0].BillId);
}