Jquery 在请求中指定contentType时Mockjax不工作
我试图用QUnit和jquerymockjax测试一些与AJAX相关的代码,但遇到了一个问题,即当修改请求contentType时,Mockjax总是返回Jquery 在请求中指定contentType时Mockjax不工作,jquery,qunit,mockjax,Jquery,Qunit,Mockjax,我试图用QUnit和jquerymockjax测试一些与AJAX相关的代码,但遇到了一个问题,即当修改请求contentType时,Mockjax总是返回null 工作JS代码: QUnit.asyncTest('$.ajax POST', function() { expect(1); $.mockjax({ url: '/test', type: 'POST', responseText: { foo:
null
工作JS代码:
QUnit.asyncTest('$.ajax POST', function() {
expect(1);
$.mockjax({
url: '/test',
type: 'POST',
responseText: {
foo: 'bar'
}
});
$.ajax({
url: '/test',
type: 'POST',
})
.done( function(data,textStatus,jqXHR) {
deepEqual(data,{foo:'bar'},'Correct response');
QUnit.start();
});
});
但是,如果我在$.ajax
请求中设置了内容类型,那么:
$.ajax({
url: '/test',
type: 'POST',
contentType: 'application/json',
})
测试失败:
Expected:
{
"foo": "bar"
}
Result:
null
我有一个例子来说明这个问题
我做错了什么?或者这是一个bug,或者JS库之间不兼容
我正在使用jquery1.7.2、mockjax 1.5.3和qunit1.14.0。在Chrome和Firefox中也观察到同样的行为
注意:当然,在我的生产代码中,我也会在请求中发送JSON编码的数据,但为了演示,我已将问题减少到我认为重现问题所需的最低限度。将数据类型:“JSON”添加到$。ajax调用有助于:
$.ajax({
url: '/test',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
})
。。。但是我不知道为什么…向$添加数据类型:“json”。ajax调用有助于:
$.ajax({
url: '/test',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
})
。。。但是我不知道为什么…向$添加数据类型:“json”。ajax调用有助于:
$.ajax({
url: '/test',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
})
。。。但是我不知道为什么…向$添加数据类型:“json”。ajax调用有助于:
$.ajax({
url: '/test',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
})
。。。但是我不知道为什么…需要
dataType
,因为否则mockjax不知道responseText
应该是什么格式。指定该属性允许mockjax将JavaScript对象字符串化以传递回jQuery,否则jQuery将返回parseerror
,因为返回的字符串不是正确的JSON。您可以看到这是如何在上完成的。dataType
是必需的,因为否则mockjax不知道responseText
应该是什么格式。指定该属性允许mockjax将JavaScript对象字符串化以传递回jQuery,否则jQuery将返回parseerror
,因为返回的字符串不是正确的JSON。您可以看到这是如何在上完成的。dataType
是必需的,因为否则mockjax不知道responseText
应该是什么格式。指定该属性允许mockjax将JavaScript对象字符串化以传递回jQuery,否则jQuery将返回parseerror
,因为返回的字符串不是正确的JSON。您可以看到这是如何在上完成的。dataType
是必需的,因为否则mockjax不知道responseText
应该是什么格式。指定该属性允许mockjax将JavaScript对象字符串化以传递回jQuery,否则jQuery将返回parseerror
,因为返回的字符串不是正确的JSON。您可以看到这是如何在上完成的。