[英]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.