在这里,我试图将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对象传递给其他函数?请帮助我。
答案 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);
}