我想创建一个函数,所以我可以使用ajax发送$ _POST。 我做了这样的代码,但它没有用。
function send(variable, value){
var e = value;
bar = variable;
$.ajax({
type: 'POST',
url: "vote.php",
data: {bar:e},
success:function(){
console.log(e);
}
});
}
我可以看到问题是数据{bar}没有得到变量值。 我怎样才能这样做,以便在编写函数
时可以获得$_POST['dog'] = corgi
send(dog, corgi)
我写时和$_POST['cat'] = bengal
send(cat, bengal)
答案 0 :(得分:1)
像这样创建的对象不会将变量解释为属性名称,因此bar
作为对象的属性实际上是"bar"
。您需要创建一个对象,并使用括号表示法中的变量动态设置属性。
function send(variable, value){
var e = value;
var data = {};
data[variable] = value;
$.ajax({
type: 'POST',
url: "vote.php",
data: data,
success:function(){
console.log(e);
}
});
}
答案 1 :(得分:1)
对亚历山大的回答表示赞同 - 认为他在技术上处于领先地位。
两个观察结果:在您的示例中,您声明要使用
send(cat, bengal)
要么你需要变量叫 cat 和 bengal 你怀疑你是否想要使用
send('cat', 'bengal')
可能只是原始问题中的类型/疏忽......?
顺便说一句(我意识到这并没有直接回答OP),一种更确定的方法,更接近JS的良好实践,就是使用$ .extend并提供一个"选项"对象在:
send({cat : "bengal"})
并在内部使用:
function send(options){
var defaultData = {}; // your defaults here (can be closured off somewhere else other than here if you need to)
$.ajax({
type: 'POST',
url: "vote.php",
data: $.extend({}, defaultData, options || {}) // handle when you dont hand in options with the '|| {}' bit
});
}
HTH