2010-07-01 109 views
1

我刚刚尝试过,或多或少的放弃将数组发送到jQuery post函数,然后将其作为POST变量进行布局。jQuery .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来获得这个工作,但是任何指导都可能有助于以我想要的方式获得此结果。

回答

1

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

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"); 
} 
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")) 

所以我觉得你的做法,包括序列化的客户端上的子阵列和解析它在服务器上,在这种情况下,似乎是正确的。