2010-07-01 110 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")) 

所以我覺得你的做法,包括序列化的客戶端上的子陣列和解析它在服務器上,在這種情況下,似乎是正確的。