首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fluxxor的Ajax请求没有发送成功操作

Fluxxor的Ajax请求没有发送成功操作
EN

Stack Overflow用户
提问于 2015-07-09 06:32:19
回答 1查看 147关注 0票数 1

我正在尝试使用jquery.ajax从一个通量的行动使用Fluxxor。我正在处理http://fluxxor.com/guides/async-data.html的异步示例。

调用是成功的(我得到了响应),但我不知道为什么它不调度LOAD_BUZZ_SUCCESS。

我要替换这段代码:

代码语言:javascript
复制
 var BuzzwordClient = {
      load: function(success, failure) {
        setTimeout(function() {
          success(_.range(10).map(Faker.Company.catchPhrase));
        }, 1000);
      }
    //...
    };

使用

代码语言:javascript
复制
var BuzzwordClient = {
  load: function(success, failure) {
      jquery.ajax({
          url: "test.json",
          dataType: 'json',
          cache: false,
          success: function(data) {
            console.log("success");
            console.log(data);

          }.bind(this),
          error: function(xhr, status, err) {
              console.log("error");
          }.bind(this)
      });
  }
//...
};

这个调用来自于action var:

代码语言:javascript
复制
BuzzwordClient.load(function(words) {
      this.dispatch(constants.LOAD_BUZZ_SUCCESS, {words: words});
    }.bind(this), function(error) {
      this.dispatch(constants.LOAD_BUZZ_FAIL, {error: error});
    }.bind(this));
  }

我需要用其他东西包装ajax调用吗?客户端的加载函数应该返回什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-09 22:04:42

当你打电话的时候

代码语言:javascript
复制
BuzzwordClient.load(function(words) {
  this.dispatch(constants.LOAD_BUZZ_SUCCESS, {words: words});
}.bind(this), function(error) {
  this.dispatch(constants.LOAD_BUZZ_FAIL, {error: error});
}.bind(this));

传递给load的两个函数在load方法中的参数successfailure中可用:

代码语言:javascript
复制
var BuzzwordClient = {
  load: function(success, failure) {

但这些函数从未被调用过。请注意原始示例是如何调用传递的success函数的,传递的单词如下:

代码语言:javascript
复制
success(_.range(10).map(Faker.Company.catchPhrase));

在Ajax回调中也需要这样做:

代码语言:javascript
复制
var BuzzwordClient = {
  load: function(success, failure) {
      jquery.ajax({
          url: "test.json",
          dataType: 'json',
          cache: false,
          success: function(data) {
            success(data); // or something similar
          },
          error: function(xhr, status, err) {
            failure(err); // or something similar
          }
      });
  }
//...
};

下面是一个简单的例子:http://jsfiddle.net/BinaryMuse/6p98L2h8/

客户端的加载函数应该返回什么?

通常,异步函数不会返回任何内容。您所关心的值直到稍后时间才可用(这使它成为异步的),因此您需要使用回调来执行流。

您也可以使用类似的承诺来抽象化其中的一部分,但是在JavaScript中,您仍然会在某个时候回到回调。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31309760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档