Ajax使用Q和jQuery调用

时间:2013-07-20 17:14:54

标签: jquery ajax q

这个问题一直让我发疯。我必须做一些非常愚蠢的事情,但我无法弄清楚它是什么。

我想将j promises库与jQuery一起使用。我有Q版0.9.6和jQuery 1.9.1(都是通过凉亭安装)。

This discussion暗示(最后)这样的事情应该有效:

var promise = Q.when($.get("https://github.com/kriskowal/q")); 

我无法完全判断这是否如何在jQuery版本1.9.1中使用Q(jQuery中有很多关于promises的更改)。但是如果我从Firefox的控制台(当前页面加载Q和jQuery)中解决这个问题,那么Ajax调用显然会被正确触发(Firebug暗示它返回的状态代码为200)。但这个承诺似乎被拒绝了(据我所知)。

例如,如果我这样做:

promise.inspect();

它列出了被拒绝的统计数据。如果我用这样的话触发我的承诺:

var promise = Q.when($.get("https://github.com/kriskowal/q")).fail(function(x) { console.log("Failed"); })

如果我看一下作为参数传递给fail方法的内容,它看起来像一个jQuery promise对象(至少据我所知)并没有真正消除太多光线(似乎不辜负作为失败“理由”的资格。

我尝试了各种各样的排列和组合,但我认为我应该吸引SO而不是仅仅在黑暗中磕磕绊绊。

这里非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

好吧,我认为这个问题的核心可能是一个CORS问题。我从jQuery和Q库服务的站点(即我在上面运行Firebug会话时加载的页面)没有任何Origin标题。

我必须深入研究以确认这一点,但是当我从与我试图访问的API(通过Ajax)相同的站点提供jQuery和Q时,事情就开始起作用了。如果Firebug和/或jQuery在各种承诺失败时实际传播了CORS错误,那将是很好的。 : - (