FISSO! GRAZIE! Vedere "Codice corretto" di seguito.jQuery Valore restituito non definito
L'obiettivo è recuperare i dati dalla finestra di dialogo. Ho visto molti articoli, ma non sono riuscito a far funzionare nessuno di loro, quindi ho deciso di utilizzare un servizio Web per passare i dati avanti e indietro tra la finestra di dialogo e la pagina sottostante.
Tutto il codice è a posto tranne il codice che legge i valori provenienti dal servizio web. Riesco a vedere nel debugger che i dati vengono passati di nuovo, ma quando torno al chiamante, i dati restituiti non sono definiti.
jQuery chiama getLocal chiama AJAX, ottiene buoni dati indietro, ma quando ritorna alla funzione che lo chiama (verbListShow), il valore restituito è "indefinito".
Questo accade in una pagina ASP.NET scritta in gran parte in jQuery e apre una finestra di dialogo 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;
}
});
}
Il codice sopra riportato funziona, ma quando chiamato, rtn non è definito. Ecco il chiamante:
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');
FISSO CODICE:
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;
}
Che cosa restituisce il servizio Web in merito al posting? Ha il campo in esso? mostra alcuni dati di esempio .. –
'return rtn;' Non è possibile tornare dal callback di successo ajax. Suggerisco di non usare la funzione getLocal o di restituire l'oggetto jqXHR. –