修繕!ありがとう!以下の「修正されたコード」を参照してください。
目標は、ダイアログボックスからデータを取り戻すことです。たくさんの記事を見てきましたが、どれも機能させることができなかったので、Webサービスを使用して、ダイアログボックスと基になるページの間でデータをやり取りすることにしました。
Webサービスから返される値を読み取るコードを除いて、すべてのコードが配置されています。デバッガーでデータが返されていることがわかりますが、呼び出し元に戻ると、返されるデータは未定義です。
jQuery関数getLocalはAJAXを呼び出し、適切なデータを取得しますが、それを呼び出す関数(verbListShow)に戻ると、戻り値は「未定義」です。
これはすべて、主にjQueryで記述されたASP.NETページで発生し、jQueryダイアログボックスを開きます。
function getLocal(name) {
$.ajax({
type: "POST",
async: false,
url: "WebServices/FLSAService.asmx/GetLocalVariable",
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ name: name }),
success: function (data) {
var rtn = data.d;
return rtn;
}
});
}
上記のコードは機能しますが、呼び出されたとき、rtnは未定義です。発信者は次のとおりです。
function verbListShow(dutyNumber) {
$('#dlgDutyList').dialog({
modal: true,
show: "slide",
width: 250,
height: 250,
open: function (event, ui) {
setLocal("DUTYNUMBER", dutyNumber);
},
buttons: {
"Select": function () {
var id = getLocal("VERBID"); // <*** Returns undefined
var verb = getLocal("VERB"); // <*** Returns undefined
$.ajax({
type: "POST",
async: false,
url: "WebServices/FLSAService.asmx/SetDuty",
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ dutyNum: dutyNumber, id: id, verb: verb }),
success: function (data) {
data = $.parseJSON(data.d);
if (data.ErrorFound) {
showMessage(data.ErrorMessage, 2, true);
}
else {
log('Set Duty: ' + data.StringReturn + ' (' + data.intReturn + ')');
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("updateDuty: "
+ XMLHttpRequest.responseText);
}
});
$(this).dialog("close");
},
Cancel: function () {
$(this).dialog("close");
}
}
});
$('#dlgDutyList').dialog('open');
修正されたコード:
function getLocal(name) {
var rtn = "";
$.ajax({
type: "POST",
async: false,
url: "WebServices/FLSAService.asmx/GetLocalVariable",
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ name: name }),
success: function (data) {
rtn = data.d;
}
});
return rtn;
}