複選框中有一組值。它需要與附加值一起發送。在PHP中我得到這個:陣列內部陣列
> Array (
> [0] => [object Object]
> [1] => value)
我的代碼是:
$.post('index.php', {'info[]':
[$("input[name='site_select_[]']:checked"),
$(this).val()]}, function(data){data});
複選框中有一組值。它需要與附加值一起發送。在PHP中我得到這個:陣列內部陣列
> Array (
> [0] => [object Object]
> [1] => value)
我的代碼是:
$.post('index.php', {'info[]':
[$("input[name='site_select_[]']:checked"),
$(this).val()]}, function(data){data});
不要使用信息[],使用信息:
$.post(
'index.php',
{
info: [$("input[name='site_select_[]']:checked"), $(this).val()]
},
function(data){...}
);
JavaScript時試圖字符串化您的JQuery對象$("input[name='site_select_[]']:checked")
它只獲取「對象對象」 我認爲你必須創建一個自定義對象,可以以更好的方式進行字符串化。
我想這可能工作
{info:
$.merge($("input[name=*site_select_]:checked").serializeArray(),
[$(this).val()])
}
它通過串行化的選擇checked
得到到一個數組的對象,然後你用merge
把它們放在一起。
我不知道這將如何工作,因爲我還沒有測試過,但由於這是一個「學習」練習,我想你可以找到一個。
警告:寫得很快。
讓我們打破你通過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
關鍵字不在上下文中。請參閱其他答案以獲得可靠的解決方案。
是的,目前我正在學習Ajax,我需要在PHP中發送所有數據 – user1564141 2012-08-16 13:31:52
問題是? – deceze 2012-08-16 13:17:34
你將不得不通過$(「input [name ='site_select _ []']:checked」)作爲其對象 – Waygood 2012-08-16 13:17:52
爲什麼不發送'info'作爲數組?在$'.post'調用之前設置它。 – Matt 2012-08-16 13:18:19