我有一个foo
发出Ajax请求的函数.我怎样才能从中回复foo
?
我尝试从success
回调中返回值,并将响应分配给函数内部的局部变量并返回该变量,但这些方法都没有实际返回响应.
function foo() {
var result;
$.ajax({
url: '...',
success: function(response) {
result = response;
// return response; // <- I tried that one as well
}
});
return result;
}
var result = foo(); // It always ends up being `undefined`.
Run Code Online (Sandbox Code Playgroud) 在我的ASP.net Web项目中,我在.js文件中编写了以下Javascript代码:
function getDeviceTypes() {
var deviceTypes;
$.ajax({
async: false,
type: "POST",
url: "Controls/ModelSelectorWebMethods.aspx/getDeviceTypes",
data: '{ }',
contentType: "application/json;",
dataType: "json",
success: function(response) {
deviceTypes = response.d;
},
error: function(xhr, status) {
debugger;
alert('Error getting device types.');
}
}); // end - $.ajax
return deviceTypes;
}
Run Code Online (Sandbox Code Playgroud)
在我尝试将此.js文件加载到子目录中的页面之前,它工作得很好.
我们假设我的项目名称是widget
.
当我在主虚拟目录中使用此代码时,Javascript解释Controls/ModelSelectorWebMethods.aspx/getDeviceTypes
为意味着https://mysite.com/widget/Controls/ModelSelectorWebMethods.aspx/getDeviceTypes
一切都很好.但是,从子目录中的页面,Javascript将其解释为意味着https://mysite.com/widget/subdirectory/Controls/ModelSelectorWebMethods.aspx/getDeviceTypes
它不起作用.
如何编写我的Javascript代码,以便可以从我的应用程序中任何目录中的页面调用AJAX Web方法?