0

我对以下 Jquery 代码有疑问:

function isAuthorised() {
  $.post("Action/Controller")', function (data) {
    return data;
  });
}

我已经测试了MVC控制器的返回值,这很好。但是当我使用以下内容检查授权时:

function onLoad() {
  var result = isAuthorised();
  alert(result); // undefined
  if (!result) 
    // redirect
}

返回值未定义。我在这里看到了一个类似的帖子,并认为这可能是一个问题encapsulation,但不同之处在于我需要返回从JQuery.post().

编辑:好的,我不想在回调中进行重定向,所以我现在尝试通过使用 .Ajax 并将 Async 设置为 false 来返回值。我现在返回[Object object]下面的代码。有人可以解释现在我将 async 设置为 false 并帮助我返回值的区别吗?

var request = $.ajax({
        url: 'Action/Controller',
        type: 'post',
        async: false
      });

      var result = request.done(function (data) {
        return data;
      });
      alert(result); // [Object object]
4

2 回答 2

1

您应该检查dataTypejQuery ajax 调用的参数。根据您想要的返回值,显式设置数据类型(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中将被填充为一个对象,因此您必须使用它的一个属性来提取数据。

于 2013-02-01T08:26:45.470 回答
0

你不能从那里回来。使用 ajax 你必须以不同的方式构造你的代码,IE 你可以在回调中重定向

function isAuthorised() {
  $.post("Action/Controller", function (data) {
    if (!data) {
        //redirect
    }
  });
}

无论如何,用javascript检查授权对我来说没有意义,你应该在提供页面服务器端之前这样做

于 2013-01-31T13:23:15.227 回答