我试图将其中一个键作为匿名函数发送到数据参数,但无论它返回什么数据类型,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
,但它发送的数据错误。
答案 0 :(得分:5)
您无需延迟执行匿名函数,因此请立即调用它以返回您的对象:
$.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'};
})(),