【问题标题】:JQuery $.post Variable Post NameJQuery $.post 变量帖子名称
【发布时间】:2011-09-14 18:10:33
【问题描述】:

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

我的代码如下:

JS

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

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();作用于我的动作变量,没有变化。

任何想法将不胜感激。

【问题讨论】:

  • 我不明白,你想做什么,变量不作为动作发送:编辑器
  • 对不起,我的错误。我只需要根据单击的按钮更改“操作”一词并使用正确的操作生成发布功能。 action 变量是动作的名称,它的 $_POST 值等于编辑器。有道理。
  • @Laurence,您不能使用变量在对象文字语法中指定属性的名称。您必须使用方括号表示法。请参阅下面我的答案末尾的编辑。

标签: jquery .post


【解决方案1】:

数据变量必须被序列化。

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

如果这是一个 GET,则 URL 将如下所示:
actions.php?action=ACTION_VALUE&editor=EDITOR_VALUE

【讨论】:

  • action 需要是一个变量。引号使它成为一个字符串。对吗?
  • Action 是变量?好吧,您需要为每个值设置一个键。第一个元素是关键,这就是我认为它不是变量的原因。再次查看我的评论。
  • 这行得通。我只是想将这两个值组合成一个帖子对象。帖子的名称是操作,值是编辑器。不过我可以这样做。谢谢。
【解决方案2】:

这是无效的 JavaScript:

action: editor

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

{ action: editor }

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

  1. 向服务器发送“action=[value of 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);

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

【讨论】:

    猜你喜欢
    • 2011-11-02
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 2011-11-27
    • 2013-06-19
    • 2013-09-11
    相关资源
    最近更新 更多