1

我似乎遇到了多个异步 ajax 调用导致 cfwheels 返回操作未找到错误的情况。我注意到当我将 async:false 添加到我的 ajax 调用时,我得到了一个成功的响应,但是当我不添加时,我随机得到一个错误响应。

此代码在处理其他 ajax 调用时工作正常,但由于异步设置需要更长的时间来加载。

    var checkLogin = function(){
         var loggedin = false;

         loginValidated = true;

         //Check login status
         $.ajax({
           type: "POST",
           url: '/loginAjax/validateLogin?format=json',
           global: false,
           async: false,
           success: function(data) {
              if (data.loggedIn) {
                 loggedin = true;
               }
           }
         });

return loggedin;
};

这随机失败,请注意我删除了异步设置:

    var checkLogin = function(){
      var loggedin = false;

    loginValidated = true;

$.ajax({
  type: "POST",
  url: '/loginAjax/validateLogin?format=json',
  global: false,
  success: function(data) {
    if (data.loggedIn) {
        loggedin = true;
    }
  }
});

return loggedin;
};

这是我要调用的操作:

    <cffunction name="validateLogin">
    <cfset var returnObj = {}>
    <!--- Set Return Data --->
    <cfset returnObj["loggedIn"] = false>

    <cfif StructKeyExists(SESSION.User, 'loggedIn')>
        <cfset returnObj["loggedIn"] = true>
    </cfif>

        <cfset renderWith(returnObj)>
    </cffunction>

任何帮助表示赞赏。:)

4

1 回答 1

1

这是处于生产模式还是设计模式?常见的 ajax 问题通常与在设计模式下框架完全加载之前触发 ajax 请求有关,这意味着您的控制器偶尔会在所有路由等加载之前被调用。

于 2013-10-16T08:04:35.040 回答