问题 Backbone.js模型获取:参数导致成功/错误/完成的回调不触发


如果我输入参数,我没有成功/错误/完成回调,但Fiddler显示200响应,我的请求的json数据就在那里。 这是关键。 Fiddler显示往返是成功的,请求的数据在客户端并且处于良好状态。  问题是骨干成功/失败/完成未调用。只是一无所获。

使用完全相同的基本URL,如果我取出参数(并从我的Web服务中并行删除它们),则会触发成功和完成。下面是我的fetch“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,只有或没有参数。

我猜测的区别在于,在主干fetch的引擎盖下,“with”参数场景是一个帖子而“without”参数是一个简单的get。 IE控制台反映了这一点,输出略有不同。

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

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

我认为这只是告诉我“嘿,你做了一个交叉来源请求,我让它通过”。 “没有”这些参数我没有得到那个警告。我确实将服务标头设置为:

Access-Control-Allow-Origin:*

而且回应确实反过来反映了这一政策。

所以问题是为什么骨干成功/错误/完成回调不会触发“带”参数?数据回归。骨干不应该反映成功吗?


8396
2017-08-15 23:04


起源

fetch 只需一个参数。读 这个。 - fbynite


答案:


把你的 successerror,和 complete 你拥有的同一个对象中的方法 data。应该只有单个对象。在Backbone引擎盖下使用 jQuery的 ajax() 方法 所以你传递给的对象 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 ');
    })
});

15
2017-08-15 23:14



答对了。非常感谢。修改后的代码。 - Robert