2013-10-15 36 views
1

我似乎遇到在多个异步调用Ajax是造成cfwheels返回找不到错误动作的情况。我注意到当我添加async:false到我的ajax调用时,我得到了一个成功的响应,但是当我不添加我随机得到错误响应时。当其他Ajax调用正在处理中,但它需要更长的时间,由于异步设置加载CFWHEELS异步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> 

任何帮助表示赞赏。 :)

回答

1

这是在生产或设计模式?常见的Ajax问题通常与一个Ajax请求发射做框架已经完全加载后,当在设计模式,这意味着所有路由等之前加载你的控制器可以偶尔被调用。

+0

这是发展模式和设计模式。我还没有打开生产模式进行测试,因为系统使用了一套API,一旦生产,它们都将连接到实时API而不是开发API。我将不得不尝试测试模式,看看我是否仍然有相同的问题。 – osekmedia

+0

是的,开发和设计模式不缓存框架,他们每次都重新加载CFC,所以我一定会尝试! – Neokoenig

+0

我觉得那样做了!谢谢!! – osekmedia