我遇到以下Jquery代码的问题:
function isAuthorised() {
$.post("Action/Controller")', function (data) {
return data;
});
}
我已经测试了MVC
控制器的返回值,这很好。但是当我用以下内容检查授权时:
function onLoad() {
var result = isAuthorised();
alert(result); // undefined
if (!result)
// redirect
}
返回的值未定义。我看过类似的帖子here并认为这可能是encapsulation
的问题,但区别在于我需要返回从JQuery.post()
检索到的值。
编辑:好的,我不想在回调中进行重定向,因此我现在尝试使用.Ajax并将Async设置为false来返回该值。我现在使用下面的代码返回[Object object]
。有人可以解释现在的差异我将异步设置为false并帮助我返回值吗?
var request = $.ajax({
url: 'Action/Controller',
type: 'post',
async: false
});
var result = request.done(function (data) {
return data;
});
alert(result); // [Object object]
答案 0 :(得分:1)
您应该检查jQuery ajax调用的dataType
参数。根据您想要的返回值,显式设置dataType(xml,json,text,...)
如果您要回赠json,它将被转换为JavaScript对象。从你的警报我假设是这样的。
尝试使用此mod获取字符串:
var request = $.ajax({
url: 'Action/Controller',
type: 'post',
dataType: 'text',
async: false
});
alert(request.responseText); // [now it will be outputted as text]
在同步中,ajax调用request
将被填充为一个对象,因此您必须使用其中一个属性来提取数据。
答案 1 :(得分:0)
你不能从那里回来。 使用ajax,您必须以不同的方式构建代码,IE可以在回调中重定向
function isAuthorised() {
$.post("Action/Controller", function (data) {
if (!data) {
//redirect
}
});
}
无论如何,使用javascript检查授权对我来说没有意义,你应该在服务页面服务器之前这样做