Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在请求中指定contentType时Mockjax不工作_Jquery_Qunit_Mockjax - Fatal编程技术网

Jquery 在请求中指定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:

我试图用QUnit和jquerymockjax测试一些与AJAX相关的代码,但遇到了一个问题,即当修改请求contentType时,Mockjax总是返回
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。您可以看到这是如何在上完成的。