2011-09-14 218 views
3

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

我的代码如下:

JS

注:在“编辑”变量被设置在我的应用程序的初始化和已经存在于这个代码的范围变量。

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();功能在我的行动变量没有变化。

任何想法将不胜感激。

+0

'编辑'是什么? – bfavaretto

+0

我不明白,你想做什么,变量不作为动作发送:编辑 –

+0

遗憾的是cunfusion。我只需要'取决于被点击的按钮而改变的动作',并用正确的动作产生后部功能。动作变量是动作的名称,其$ _POST值等于编辑器。合理。 – Laurence

回答

4

数据变量必须被序列化。

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

如果这是一个GET,网址应该是这样的:
actions.php行动= ACTION_VALUE &编辑= EDITOR_VALUE

+0

行动需要是一个变量。行情使它成为一个字符串。对? – Laurence

+0

动作是一个变量?那么你需要为每个值都有一个键。第一个元素是关键,这就是为什么我认为它不是一个变量。再次看到我的评论。 –

+0

这个工作。我只是试图将这两个值组合成一个单一的后对象。作为操作的职位名称和作为编辑器的值。我可以这样做,但是。谢谢。 – Laurence

0

这是无效的JavaScript?

action: editor 

如果editor是在你的代码中的其他地方定义的变量,那么也许你试图发送一个对象:

{ action: editor } 

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

  1. 服务器发送“行动= [的editor值]”的后体。
  2. 您的action之前定义的变量未使用,并且未发送到服务器。

帖子主体通常采用“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); 

没有用于指定变量属性名称的对象字面值语法。你必须用上面的方括号表示来做到这一点。