gpt4 book ai didi

javascript - 我的函数无法传递它的参数值 javascript

转载 作者:行者123 更新时间:2023-12-02 20:12:55 25 4
gpt4 key购买 nike

我一直在努力从函数传递参数,但我真的不知道我哪里出了问题。我有一个函数,它有一个参数,我想将其传递给 postData 以在 jQgrid 中显示数据。这是我的带有参数的函数代码:

function getTID(hdrID){
var selected = $('#editTallyHdr').val();
var hdrID = '';
var hdrNo = '';

var nameFlag=0;
var par_ams = {
"SessionID": $.cookie("SessionID"),
"dataType": "data"
};
$.ajax({
type: 'GET',
url: 'processjson.php?' + $.param({path:'getData/tallyHdr',json:JSON.stringify(par_ams)}),
dataType: primeSettings.ajaxDataType,
success: function(data) {
if ('error' in data)
{
showMessage('ERROR: ' + data["error"]["msg"]);
}
else{
$.each(data['result']['main']['rowdata'], function(rowIndex, rowDataValue) {
$.each(rowDataValue, function(columnIndex, rowArrayValue) {
var fldName = data['result']['main']['metadata']['fields'][columnIndex].name;
if (fldName == 'transaction_id'){
hdrID = rowArrayValue;
}
if (fldName == 'transaction_num'){
hdrNo = rowArrayValue;
if(selected == hdrNo){
nameFlag =1;
};
}
});
});
}
}
});
return (hdrID);
}

这是我的 jQgrid 代码,我在其中调用该函数来获取它的参数:

$("#tblPlank").jqGrid({
url: '',
datatype: 'local',
jsonReader : {
.
.
.
serializeGridData: function(postData) {

var ctr =0;
var filt=[];
var c=[];

var jsonParams = {
'SessionID': $.cookie("SessionID"),
'dataType': 'data',
'transaction_id':getTID(hdrID),
'filters': c,
'lines':plank_data,
'recordLimit': postData.rows,
'recordOffset': postData.rows * (postData.page - 1),
'rowDataAsObjects': false,
'queryRowCount': true,
'sort_fields': postData.sidx
};
.
.// some code here
.
.
return 'json=' + JSON.stringify(jsonParams);
},
loadError: function(xhr, msg, e) {
showMessage('HTTP error: ' + JSON.stringify(msg) + '.');
},
colNames:[...],
colModel:[
........................
],
.
.
.
caption: "Tally Transaction Details/Lines"

我还有另一个代码想要获取该参数。这是最后的代码:

var par_ams = {
"SessionID": $.cookie("SessionID"),
"dataType": "data",
"transaction_id": getTID(hdrTID)
}
$('#tblPlank').setGridParam({
url:'processjson.php?path=' + encodeURI('getData/tallyLnDtl') + '&json=' + encodeURI(JSON.stringify(par_ams)),
datatype: primeSettings.ajaxDataType,
});
$('#tblPlank').trigger('reloadGrid');

函数 getTID(hdrID) 下面的代码无法检索参数,它显示为空。这对任何人来说可能都很简单,但我真的需要这方面的帮助..我已经为此工作了很长时间。

最佳答案

这是一个非常常见的误解。仅在过去两周内,我可能就回答了其中 15 个问题。 ajax 调用是异步调用。这意味着当您进行 ajax 调用时,它只是启动请求。然后,当该请求在后台运行时,您的代码会立即继续执行。这意味着您的函数 getTID() 在 ajax 调用完成之前就返回了,而且它的值还不知道。因此,当您从 getTID() 返回时,无法从 ajax 函数返回响应值,因为它还不知道。

要使用异步函数调用(如 ajax 调用),您必须将编程风格更改为异步工作的风格。在这种情况下,对 ajax 调用的响应仅在 ajax all 的成功处理程序中已知。因此,您必须重构代码以继续执行处理以及处理来自成功处理程序的 ajax 响应。如果您只有一点点工作要做,那么您可以将其全部放入成功处理程序中。如果您有很多工作要做,那么您可以将所有其余工作放在函数调用中,并从成功处理程序中调用它。

关于javascript - 我的函数无法传递它的参数值 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6737909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com