2012-08-16 103 views
-1

複選框中有一組值。它需要與附加值一起發送。在PHP中我得到這個:陣列內部陣列

> Array (
>  [0] => [object Object] 
>  [1] => value) 

我的代碼是:

$.post('index.php', {'info[]': 
[$("input[name='site_select_[]']:checked"), 
$(this).val()]}, function(data){data}); 
+1

問題是? – deceze 2012-08-16 13:17:34

+0

你將不得不通過$(「input [name ='site_select _ []']:checked」)作爲其對象 – Waygood 2012-08-16 13:17:52

+1

爲什麼不發送'info'作爲數組?在$'.post'調用之前設置它。 – Matt 2012-08-16 13:18:19

回答

0

不要使用信息[],使用信息:

$.post(
    'index.php', 
    { 
     info: [$("input[name='site_select_[]']:checked"), $(this).val()] 
    }, 
    function(data){...} 
); 
1

JavaScript時試圖字符串化您的JQuery對象$("input[name='site_select_[]']:checked")它只獲取「對象對象」 我認爲你必須創建一個自定義對象,可以以更好的方式進行字符串化。

0

我想這可能工作

{info: 
    $.merge($("input[name=*site_select_]:checked").serializeArray(), 
    [$(this).val()]) 
} 

它通過串行化的選擇checked得到到一個數組的對象,然後你用merge把它們放在一起。

我不知道這將如何工作,因爲我還沒有測試過,但由於這是一個「學習」練習,我想你可以找到一個。

警告:寫得很快。

1

讓我們打破你通過POST發送的內容:

{'info[]': [$("input[name='site_select_[]']:checked"), $(this).val()]} 

這相當於:

{ 
    'info[]': [ 
       $("input[name='site_select_[]']:checked"), 
       $(this).val() 
      ] 
} 

所以您發送翻譯成一個單一的鍵/值對的PHP數組的對象:

{ 
    'key' : 'value' 
} 

的關鍵是

info[] 

所以PHP的計算結果爲$result = array("info[]", $value);

,值是

[ 
     $("input[name='site_select_[]']:checked"), 
     $(this).val() 
    ] 

而這又是二值的Javascript數組,首先是一個jQuery對象:

$("input[name='site_select_[]']:checked") 

而第二個「價值」的某些this對象,這不是上面提到的那個:

$(this).val() 

所以在PHP中你必須

$result = array("info[]", array(..Jquery object..., jqueryvalue); 

因此,我認爲你對Javascript和JQuery的非常基本的一些誤解。

這很明顯,它不這樣工作;你也傳遞了無用的數據,並且以不好的方式,並且this關鍵字不在上下文中。請參閱其他答案以獲得可靠的解決方案。

+0

是的,目前我正在學習Ajax,我需要在PHP中發送所有數據 – user1564141 2012-08-16 13:31:52