繁体   English   中英

使用匿名函数时,jQuery ajax方法不传递发布数据键

[英]jQuery ajax method doesn't pass post data key when using anonymous function

我试图将数据参数的键之一作为匿名函数发送,但是无论返回什么数据类型,Jquery都不会将其传递给服务器。

例子:

$.ajax({
    type: 'post',
    url: 'http://host.com/cart',
    dataType: 'html',
    data: {
        'quantity': function () {
            var return_obj = [];
            return_obj['1:YTowOnt9'] = '1';
            return return_obj;
        },
        'action': 'cart-update-quantity'
    },
    success: function(data) {
        console.log(data);
    }
});

它具有action POST键,但是quantity键为空字符串。 我也尝试过作为字符串和对象。

此示例正在工作:

$.ajax({
    type: 'post',
    url: 'http://host.com/cart',
    dataType: 'html',
    data: {
        'quantity': {
            '1:YTowOnt9': '1'
        },
        'action': 'cart-update-quantity'
    },
    success: function(data) {
        console.log(data);
    }
});

如何发送匿名函数到数据中的quantity键? 匿名函数将动态获取一些表单输入。 我也尝试过jQuery serializeArray ,但是它发送数据错误。

您不需要推迟执行匿名函数,因此只需立即调用它即可返回您的对象:

$.ajax({
    type: 'post',
    url: 'http://host.com/cart',
    dataType: 'html',
    data: {
        'quantity': (function () {
            var return_obj = {};
            return_obj['1:YTowOnt9'] = '1';
            return return_obj;
        })(),
        'action': 'cart-update-quantity'
    },
    success: function(data) {
        console.log(data);
    }
});

这称为IIFE(立即调用函数表达式)。

或者,只需在Ajax调用之前构建对象。在任何情况下,错误都归因于传递函数而不是传递函数的结果。

*注意:此代码包含Bergi进行的编辑,以创建对象(使用{} )而不是数组(使用[]

您当然可以简单地将IIFE声明为匿名对象:

'quantity': (function () {
        return {'1:YTowOnt9': '1'};
    })(),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM