2012-03-15 104 views
0

我有以下代碼:

var social_buttons_array = []; 
social_buttons_array["google"] = $("input[name='social_popup_google']").is(":checked") ? 1 : 0; 
social_buttons_array["twitter"] = $("input[name='social_popup_twitter']").is(":checked") ? 1 : 0; 
social_buttons_array["twitter_follow"] = $("input[name='social_popup_twitter_follow']").is(":checked") ? 1 : 0; 
social_buttons_array["facebook"] = $("input[name='social_popup_facebook']").is(":checked") ? 1 : 0; 

而且我試圖傳遞數組是這樣的:

$.get(
    ajaxurl, 
    { 
     action: 'process_data', 
     get: 'social_popup', 
     social_buttons_array : social_buttons_array // not works 
    }, 
    function(response) { 
    }, 
    'json' 
    ); 

這不作品。任何想法傳遞數組?


EDIT & &溶液

我編輯這個問題通過一個對象,將作爲一個陣列,以取代associative array

var social_buttons_array = new Object(); 
social_buttons_array.google = $("input[name='social_popup_google']").is(":checked") ? 1 : 0; 
social_buttons_array.twitter = $("input[name='social_popup_twitter']").is(":checked") ? 1 : 0; 
social_buttons_array.twitter_follow = $("input[name='social_popup_twitter_follow']").is(":checked") ? 1 : 0; 
social_buttons_array.facebook = $("input[name='social_popup_facebook']").is(":checked") ? 1 : 0; 

$.get(
    ajaxurl, 
    { 
     action: 'process_data', 
     get: 'social_popup', 
     social_buttons_array : JSON.stringify(social_buttons_array) // it works great over an object 
    }, 
    function(response) { 
    }, 
    'json' 
    ); 

要管理PHP這個數組/對象,我們需要:

$social_buttons_array = json_decode(stripslashes($_GET['social_buttons_array'])); 

然後我們必須管理這一變種作爲一個對象:

echo $social_buttons_array->google 
// results in 1 or 0 

回答

3

JSON.stringify()序列化呢?

social_buttons_array : JSON.stringify(social_buttons_array) 
+0

謝謝。你讓我在正確的方向... – 2012-03-15 01:27:39

1

GET請求的形式放在自己的價值觀的網址:

page.php?arg1=value&arg2=value2 

所以你不能只傳遞一個關聯數組,除非你以某種方式將其轉換爲字符串值(也許在JSON格式,因爲反意見建議)。

另一個選項可能是將字典的每個鍵作爲URL參數傳遞。

var urlParams = { 
    action: 'process_data', 
    get: 'social_popup', 
}; 

for (key in social_buttons_array) { 
    urlParams[key] = social_buttons_array[key]; 
} 

$.get(ajaxurl, urlParams, function(data) { 
    $('.result').html(data); 
}); 

將發送這樣的事情:

page.php?action=process_data&get=social_popup&google=0&twitter=0&twitter_follow=0&facebook=0 

這真的取決於你將如何處理在服務器端的數據。

+0

+1謝謝,這是一個很好的和有價值的解決方案。但我想傳遞一個類似數組的數據。 – 2012-03-15 01:28:54