2013-11-27 38 views
2

我正在使用Laravel 4构建Web应用程序。我网站上的几乎所有链接都通过jQuery AJAX加载内容。但是,当我正在构建,并且Laravel引发错误时,错误页面不会显示在我的目标区域中。所以我最终禁用了AJAX,所以我可以看到Laravel抛出的错误。如何在通过AJAX加载时显示Laravel错误

有什么我可以改变我的AJAX加载器,将显示Laraval错误?

function LoadContent(url, target, method, data) 
    { 
     $(target).fadeOut(20); 

     var loadingTimeout = setTimeout(function() { $(target).html('<div style="text-align:center;font-size:150%;">Loading ...</div>').fadeIn(200); }, 1000); 

     var request = $.ajax({ url: url, type: method, data: data }); 

     var tooLongTimeout = setTimeout(function() { request.abort(); request = false; $(target).html('<div class="large-9 large-centered columns"><h1>Request Failed</h1><p>Please try again or contact us to report the issue.</p></div>').fadeIn(200); }, 60000); 

     request.done(function(result) { 
       clearTimeout(loadingTimeout); 
       clearTimeout(tooLongTimeout); 
       $(target).html(result).fadeIn(50); 
       AjaxElements(); 
     }); 
    } 
+0

你可以尝试把你的代码放在try-catch块并捕获错误服务器端,然后返回一个json编码的错误消息?我以前没有遇到过这个问题,但这将是我的第一个方法。此外,在重新阅读您的问题之后,您可能会更好地在服务器端代码上进行单元测试,而不是尝试调试客户端。 – echochamber

+0

如果您使用Google Chrome,则可以看到Laravel错误。右键单击 - >检查元素 - >网络部分会显示您的实际错误信息。 – Anam

回答

2

你可以用这个漂亮的函数来获取所有的AJAX错误。然后,您只需在控制台中显示您从Laravel获得的JSON对象。我经常使用它。

$(document).ajaxError(function(event, jqxhr, settings, exception) { 
    var error = $.parseJSON(jqxhr.responseText); 
    console.log(error.error) 
}); 

还有很多更多的信息,你可以得到与此。

相关问题