【问题标题】:Backbone.js model fetch: parameters cause success/error/completed callbacks not to triggerBackbone.js 模型获取:参数导致成功/错误/完成的回调不触发
【发布时间】:2013-08-18 06:31:02
【问题描述】:

如果我输入参数,我不会收到成功/错误/完成的回调,但 Fiddler 显示 200 响应并且我请求的 json 数据在那里。 这是关键。 Fiddler 显示往返成功,并且请求的数据在客户端并且处于良好状态。 问题是骨干成功/失败/完成未调用。只是得到一个大的东西。

使用完全相同的基本 URL,如果我取出参数(并同时从我的 Web 服务中删除它们),成功和完成都会被触发。下面是我获取“with”参数:

myModel.fetch({
    data: {
        name: 'Bob',
        userid: '1',
        usertype: 'new'
    }
}, {
    success: (function () {
        alert(' Service request success: ');
    }),
    error: (function (e) {
        alert(' Service request failure: ' + e);
    }),
    complete: (function (e) {
        alert(' Service request completed ');
    })
});

主干的行为有何不同?它是相同的 URL,只是带有或不带有参数。

我猜测区别在于,在主干获取的底层,“带”参数场景是一个帖子,而“不带”参数是一个简单的获取。 IE 控制台反映了这一点,输出略有不同。

“With”参数我的 IE 浏览器控制台报告请求需要 CORS 的警告(不是错误而是警告):

!SEC7118:http://example.com/service/myservice.asmx/myoperation?name=Bob&userid=1&usertype=new 的 XMLHttpRequest 需要跨域资源共享 (CORS)。

我认为这只是在告诉我“嘿,你提出了跨域请求,我让它通过了”。 “没有”参数我没有得到那个警告。我确实将服务标头设置为:

访问控制允许来源:*

回复确实反映了该政策。

所以问题是为什么主干成功/错误/完成的回调不触发“with”参数?数据让它回来。骨干不应该反映成功吗?

【问题讨论】:

  • fetch 接受一个参数。阅读this

标签: ajax backbone.js parameters callback


【解决方案1】:

将您的successerrorcomplete 方法放在您拥有data 的同一个对象中。应该只有一个对象。在后台 Backbone 仅使用 jQuery's ajax() method,因此您传递给 fetch() 的对象可以使用任何可以包含在传递给 $.ajax() 的设置对象中的属性。

myModel.fetch({
    data: {
        name: 'Bob',
        userid: '1',
        usertype: 'new'
    },
    success: (function () {
        alert(' Service request success: ');
    }),
    error: (function (e) {
        alert(' Service request failure: ' + e);
    }),
    complete: (function (e) {
        alert(' Service request completed ');
    })
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 2018-12-23
    • 2016-03-25
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多