我对如何关联索引和javascript感到困惑。
在我的javascript中,我这样做:
$("input[type=button]").click(function () {
var checked = {};
$('input[type=checkbox]').each(function() {
if ($(this).is(':checked')) {
checked[$(this).attr('name')] = $(this).val();
}
});
var value = [];
value.push($(this).siblings("input[type=text]").val());
$.ajax({ url: "scripts/php/generatehtml.php",
data: {action: value},
type: 'post',
dataType: "json",
success: ...<cut for brevity>});
所以在我的PHP代码中,我这样做:
if (isset($_POST['action']) && !empty($_POST['action'])) {
var_dump($_POST['action']);
}
得到这个:
array(1) {
[0]=>
string(5) "12277"
}
如您所见,这是一个索引数组,我想要一个关联数组。 但无论我做什么,都会这样:
value['id'] = $(this).siblings("input[type=text]").val()
什么都没发送。
我对Ajax不是很好,这里的任何帮助都会非常棒!
注意:我确实看过其他ajax数组的答案,但我不认为他们回答了我的问题。
答案 0 :(得分:3)
如果需要关联数组,请将变量初始化为一个。这样您就可以添加与特定属性相对应的值,如下所示:
var value = {};
value['id']=$(this).siblings("input[type=text]").val();
答案 1 :(得分:2)
您不能在JS中使用关联索引数组。
您可以使用JS对象:
var value = {};
然后你可以这样做:
value['id'] = $(this).siblings("input[type=text]").val()
或者
value.id = $(this).siblings("input[type=text]").val()
答案 2 :(得分:0)
只是评论:
if ($(this).is(':checked')) {
checked[$(this).attr('name')] = $(this).val();
}
可以替换为:
if (this.checked) {
checked[this.name] = this.value;
}