我已经研究了2天,但尚未找到适合我的问题的解决方案。本质上我试图使用jQuery基于多个复选框按ID“链接”数据库行,但这里有点棘手:
positions
)显示为HTML表格(#ct
),每行旁边都有复选框。positions
中的行应该在covered_positions
中创建一个新行,其中列id
(PK),linked_id1
,linked_id2
,{{1} },linked_id3
linked_id4
id
positions
使用以下内容在 ctActions()
的复选框值中创建数组:
ctActions()
编码并将数据发送给PHP:
var linked_ids = [];
$("#ct input[type='checkbox']:checked").each(function() {
linked_ids.push(this.value);
});
在我的 var linked_ids_json = JSON.stringify(linked_ids);
$.post('link-positions.php', { linked_ids_json: linked_ids_json } );
:
link-positions.php
但毕竟这一切都没有发生。我确信我的代码中有一些明显的错误,所以我想我会把它发布给一些更有经验的人。
// Get & explode array
$array = json_decode($_POST['linked_ids_json']);
// Test whether each value is set -- Not sure if needed
$linked_id1 = (isset($array[0]) ? $array[0] : "");
$linked_id2 = (isset($array[1]) ? $array[1] : "");
$linked_id3 = (isset($array[2]) ? $array[2] : "");
$linked_id4 = (isset($array[3]) ? $array[3] : "");
include('../mysqli-connect.php');
$conn = dbConnect();
$sql = "INSERT INTO `covered_positions` (
linked_id1,
linked_id2,
linked_id3,
linked_id4)
VALUES (?, ?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param('iiii',
$linked_id1,
$linked_id2,
$linked_id3,
$linked_id4);
$stmt->execute();
$conn->close();
至$stmt->execute
,但仍未解决问题。答案 0 :(得分:0)
检查FireBug是否成功完成AJAX
请求,或者出现任何错误。
接下来,通过print_r($_POST);
考虑您的HTML就像
<form id="form1">
<input class="cb" type="checkbox" value="a" name="cbTest[]" />
<input class="cb" type="checkbox" value="b" name="cbTest[]" />
<input class="cb" type="checkbox" value="c" name="cbTest[]" />
<input class="cb" type="checkbox" value="d" name="cbTest[]" />
</form>
我建议您使用
获取选中的值// if the form only contains checkboxes
var linked_ids_json = $('#form1').serialize();
// Or
var linked_ids_json = $('.cb').serialize();
$.ajax({
type: 'post',
url: 'link-positions.php',
data: linked_ids_json,
success: function () {
// callback
}
});
在PHP中使用,
$array = $_POST['linked_ids_json'];
您将能够访问$linked_id[0];
答案 1 :(得分:0)
由OP解决。这最初被编入问题正文:
我发现link-positions.php文件位于错误的目录中!下面的代码工作正常。
答案 2 :(得分:0)
我设法解决了这个问题。代码工作正常,只是link-positions.php在错误的目录中。希望代码可以帮助其他人完成类似的任务。