0

我遇到了类似的问题:查找操作(AJAX 请求)被拒绝,在线中看不到

但是,就我而言,我提出了一个要求。此请求适用于正常页面加载。在表单提交(而不是通过 ember)后,它无法静默加载,重定向回同一页面。没有发出 AJAX 请求。

我的主要问题是:我该如何调试这样的问题?

我试过的

我在各种地方添加了 console.log 语句以了解请求生命周期。

由于我已经读过如果在其中引发异常,承诺可能会被拒绝,因此我尝试将 chrome 调试器切换为“暂停所有异常”(而不是“暂停未捕获的异常”)。当然,它会在一些例外情况下中断,例如:

            // This should fail with an exception
            // Gecko does not error, returns false instead
            try {
                matches.call( div, "[test!='']:sizzle" );

但是由于我有一种方法可以让请求生效,也可以让它失效,所以我可以很容易地比较差异。当我的请求失败时,我预计会有一个未捕获的异常,但没有这样的运气。

我还添加了一个

Ember.RSVP.configure('onerror', function(error) {
  console.log(error.message);
  console.log(error.stack);
});

块,但它不会被调用。

我还查看了控制台中的不同对象以尝试了解我的应用程序状态:

store = App.__container__.lookup('store:main')
b = store.find('bundle')
b.isRejected // => true
b.reason.statusText // => "error"

更新:更多细节

我正在从事的项目由 Rails 支持。我在用:

DEBUG: -------------------------------
DEBUG: Ember.VERSION : 1.0.0
DEBUG: Handlebars.VERSION : 1.0.0 
DEBUG: jQuery.VERSION : 1.8.3
DEBUG: ------------------------------- 

它没有出现在调试输出中,但我使用的是 ember-data 1.0 beta 3:

// Version: v1.0.0-beta.3
// Last commit: 2259c27 (2013-09-28 19:24:07 -0700)

该应用程序加载所有捆绑包以呈现它们和一个表单,但该表单直接提交给 Rails。Rails 处理发布请求并重定向回/ember 应用程序所在的位置。

第一个/加载一切正常的请求,但是当我提交表单并重定向回来时,我的 ajax 调用我的调用store.find('bundle')什么也不做。

更新

我发现我的问题与推送器(websockets)有关。

这个问题似乎是间歇性的,我只在 Chrome 中看到过(我只测试过 Firefox)。

当我在页面刷新之前断开与 websockets 的连接时,问题就消失了。

4

1 回答 1

0

在您的情况下,失败处理程序正在接收 jQuery XMLHttpRequest。试着看看什么responseTextstatus正在返回。

App.__container__.lookup('store:main').find('bundle').then(null, function(reason) {
  reason.responseText // response from the server, maybe can show an error page in html
  reason.status // 404 page not found, 500 some server error you will need to chech the logs etc.
});

我希望它有帮助

于 2013-09-30T17:40:59.380 回答