JQuery $ .post变量帖子名称

时间:2011-09-14 18:10:34

标签: jquery .post

我遇到了jquery post()函数的问题。我有几个按钮,我使用一个post功能来处理所有按钮。我似乎无法让变量的帖子名称起作用。

我的代码如下:

JS

注意:“editor”变量是在我的应用程序的init上设置的变量,并且已经存在于此代码的范围内。

controls.find('button').live('click',function(){

     //determine what button is clicked
     var action  = this.className;

     $.post("actions.php",action: editor);
     //functions run after post
});

变量似乎没有通过。当我将变量更改为字符串时,它工作正常。我也试过运行toString();我的动作变量上的函数没有任何变化。

任何想法都将不胜感激。

2 个答案:

答案 0 :(得分:4)

必须序列化数据变量。

$.post("actions.php",{'action':action,'editor':editor});

如果这是一个GET,URL将如下所示:
actions.php行动= ACTION_VALUE&安培;编辑= EDITOR_VALUE

答案 1 :(得分:0)

这是无效的JavaScript:

action: editor

如果editor是代码中其他位置定义的变量,那么您可能正在尝试发送对象:

{ action: editor }

对象有一个名为“action”的属性,其值与editor相同。在这种情况下:

  1. 向服务器发送“action = [value of editor]”的帖子正文。
  2. 之前定义的action变量未使用,也未发送到服务器。
  3. 帖子正文通常采用“key1 = value1& key2 = value2”的形式。 jQuery获取一个转换为帖子正文的对象。这样的对象看起来像{ key1: "value1", key2: "value2" }。所以你的电话会是这样的:

    $.post("url.php", { key1: "value1", key2: "value2" });
    

    或者,如果您为值定义了变量:

    $.post("url.php", { key1: value1, key2: value2 });
    

    在这里猜猜......也许你想要的是:

    $.post("actions.php", { action: action, editor: editor });
    

    修改:根据您的评论,这可能是您想要的:

    var postData = {};
    postData[action] = editor;
    $.post("actions.php", postData);
    

    没有用于从变量指定属性名称的对象文字语法。你必须使用上面的方括号表示法。