使用ajax向$_POST编写函数

writing a function to $_POST using ajax

本文关键字:函数 POST ajax 使用      更新时间:2024-01-08

我想创建一个函数,这样我就可以使用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)
像这样创建的对象不会将变量解释为属性名称,因此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);
            }
        });
  }

支持亚历山大的回答-认为他在技术上是正确的。

两个观察结果:在您的示例中,您表示要使用

send(cat, bengal)

如果您需要名为catbengal的变量,则怀疑您实际上想要使用

send('cat', 'bengal')

可能只是你最初问题中的一个打字错误/疏忽。。。?

顺便说一句(我意识到这并不能直接回答OP),一种更具确定性的方法和更接近JS的良好实践是使用$.extend并将一个"options"对象交给

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