1
我尝试用sinon.js来模拟服务器,并用jQuery.ajax
来调用它。但我无法让它工作。sinon.js 1.10,jquery 2.1和同步请求
下面的代码:
$(function() {
var server = sinon.fakeServer.create();
server.respondWith('POST', '/some/test', [200, { 'Content-Type' : 'application/json'}, JSON.stringify({
id : 'test',
value : 'test'
})]);
var success = sinon.spy(),
error = sinon.spy();
jQuery.ajax({
url : '/some/test',
async : false,
type : 'POST',
data : JSON.stringify({
test : 'test'
}),
contentType : 'application/json',
success : success,
error : error,
});
console.log(server.requests[0].status);
console.log(server.requests[0].method);
console.log(server.requests[0].url);
console.log(server.requests[0].requestBody);
console.log(success.called);
console.log(error.called);
server.restore();
});
如果你试试这个代码,你会看到这样的输出:
200
POST
/some/test
{"test":"test"}
false
false
根据第4个日志,兴农响应请求。但jQuery永远不会调用成功回调(并且错误不会被调用)。 这就像jQuery ajax请求永远不会完成。
AJAX是异步的,当您调用控制台日志时,AJAX调用仍在处理中。 –
即使在选项中有'async:false'? – Magus
哦,我没有看到。我不知道,异步错误是一个不好的习惯,因此我从来没有使用它。 –