固定!ありがとう!下記の「修正されたコード」を参照してください。jQuery戻り値が定義されていません
目的は、ダイアログボックスからデータを取得することです。私は多くの記事を見てきましたが、それらのいずれかを動かすことができなかったので、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');
FIXED CODE:
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;
}
名前を投稿するときにWebサービスから返される内容は何ですか?それにはdフィールドがありますか? –
'return rtn;' ajaxの成功のコールバックから戻ることはできません。私は、getLocal関数を使用しないか、jqXHRオブジェクトを返すことをお勧めします。 –