如果我输入参数,我不会收到成功/错误/完成的回调,但 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,只是带有或不带有参数。
我猜测区别在于,在主干获取的引擎盖下,“with”参数场景是一个帖子,而“without”参数是一个简单的 get。IE 控制台以略微不同的输出反映了这一点。
“With”参数我的 IE 浏览器控制台报告请求需要 CORS 的警告(不是错误而是警告):
!SEC7118:用于http://example.com/service/myservice.asmx/myoperation?name=Bob&userid=1&usertype=new的 XMLHttpRequest需要跨域资源共享 (CORS)。
我认为它只是在告诉我“嘿,你提出了跨域请求,我让它通过了”。“没有”参数我没有得到那个警告。我确实将服务标头设置为:
访问控制允许来源:*
回应确实反映了该政策。
所以问题是为什么骨干成功/错误/完成的回调不触发“with”参数?数据让它回来。骨干不应该反映成功吗?