使用ajax将函数写入$ _POST

时间:2015-02-19 05:05:20

标签: javascript php jquery ajax

我想创建一个函数,所以我可以使用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)

2 个答案:

答案 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