带有动态变量数组的jQuery .post

时间:2010-07-01 14:12:50

标签: php jquery ajax posting

我刚试过并且或多或少地放弃了将数组发送到jQuery post函数,然后将它们作为POST变量进行布局。

我在这里已经阅读了很多类似的问题,但似乎没有人能够得到它。

我尽我所能,关闭了以下

function sendValue(requestArray, requestAction){
$.post("requests.php", { request: requestAction, 'requestArray[]': function () { $.each(requestArray, function(key, value) { return key: value; }); } }, function(data){    $('#display').html(data.returnFromValue);

 }, "json");
}

错树,吠叫?我已经通过序列化什么是requestArray并将PHP传递给parse_str来实现这一点,但任何指导都可能有助于按照我想要的方式实现。

2 个答案:

答案 0 :(得分:1)

现在看起来你正在将一个函数作为请求参数传递。我只是将代码拉出并先组合你的地图,然后将其传递给post函数。

function sendValue(requestArray, requestAction){
   var requestParameters = {};
   requestParameters["request"] = requestAction;
   $.each(requestArray, function(key, value) {
      requestParameters[key] = value;
   });
   $.post("requests.php", requestParameters, function(data){ $('#display').html(data.returnFromValue); }, "json");
}

如果你真的希望他们留在地图而不是将它们弄平,也许可以试试这样的东西。我不确定PHP是否会自动处理它,但您可以编写一些PHP代码来自己组装地图。

function sendValue(requestArray, requestAction){
   var requestParameters = {};
   requestParameters["request"] = requestAction;
   $.each(requestArray, function(key, value) {
      requestParameters["requestArray[" + key + "]"] = value;
   });
   $.post("requests.php", requestParameters, function(data){ $('#display').html(data.returnFromValue); }, "json");
}

答案 1 :(得分:0)

据我所知,如果在表单输入中添加方括号,PHP会希望该键包含一个平面子数组,所以:

<input name="foo[]" value="blahblah"/>
<input name="foo[]" value="blahblah"/>

将产生如下数组:

array("foo" => array("blahblah", "blahblah"));

我认为您的requestArray[]中可能没有多个键/值对,就像您要尝试的那样,例如在服务器上得到类似的东西:

array("foo" => array("bar" => "baz, "hehe" => "hahah"))

所以我认为你的方法涉及在客户端上序列化子数组并在服务器上解析它,在这种情况下,似乎是正确的。