我通过jQuery AJAX调用了web服务。 web服务返回'True'作为输出。
我想返回函数返回。但它返回undefined。
问题的根源在哪里?
函数IsAuthenticated返回undefined但是response.d包含'True'值(其字符串)。
function IsAuthenticated() {
//Todo Check If user logined or not from server
return CallWebService("Server/WebServices/Server.asmx/IsUserLogined", '{}');
}
function CallWebService(WebServicePath, parameters) {
$.ajax({
type: "POST",
url: WebServicePath,
data: parameters,
async: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert(response.d);
if (response.d == 'True') {
return true;
}
else
{ return false; }
},
failure: function (msg) {
alert("error");
}
});
答案 0 :(得分:3)
我看到你正在使用async:false选项使ajax调用同步。
但是,success函数仍然是一个回调函数,并且成功处理程序返回true将不会因ajax函数调用而返回值。
您需要将输出捕获到局部变量中并将其返回。
试试这个:
function CallWebService(WebServicePath, parameters) {
var retValue = null;
$.ajax({
type: "POST",
url: WebServicePath,
data: parameters,
async: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert(response.d);
if (response.d == 'True') {
retValue = true;
}
else
{ retValue = false; }
},
failure: function (msg) {
alert("error");
}
});
return retValue;
}