我意识到发送这个数组不应该这么复杂。我回去修改了我的原始jquery脚本以推送()[]项目。
var seqImg = new Array();
$('input[name="seqImg[]"]').each( function() {
seqImg.push($(this).val());
} );
使用ajax,我使用了data: {seqImg:seqImg}
和async:false
的附加配置,以确保序列保持正确的顺序。
在PHP ...
$sql= "INSERT INTO unit_test(`unit_id`,`seq_img`) VALUES ";
$i=0;
$seqImgs_count = count($seqImgs);
//$data = $seqImgs_count;
//echo $data;
foreach($seqImgs as $item) {
$end = ($i == $seqImgs_count-1) ? ';' : ',';
$sql .= "('".$unit_id1."','".$item."')".$end;
有效!
我正在尝试收集一组由用户动态生成的序列。
到目前为止,我已经模仿了AustinAllover's answer。这似乎让我接近,但并不完全在那里。
// Connect to the database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
or die ('Error connecting to MySQL server.');
if(isset($_POST["result"])){
$json = trim($_POST['result']);
$item_array = json_decode($json,true);
// Begin building the query
// ------------------------
$sql= "INSERT INTO unit_test (`unit_id`,`seq_img`,`seq_desc`) VALUES ";
$i=0;
$array_count = count($item_array);
// ------------------------
// NOTE: I've echo'd $array_count
//...it is showing `1`
//...but it is supposed to be 3
// ------------------------
$data = $array_count;
echo $data;
foreach($item_array as $item) {
// Create comma or semi-colon
$end = ($i == $array_count) ? ';' : ',';
// Build each row of data to insert
$sql .= "('".$item['unit_id']."','".$item['array_seq_image']."','".$item['array_seq_desc']."')".$end;
$i++;
}
mysqli_query($dbc,$sql)
or die('Error with INSERT. '.$sql);
mysqli_close($dbc);
警报共享通过Ajax seq_array
发送的data: {result:JSON.stringify(seq_array)}
,我已经包含了示例Jquery / Ajax:
jsFiddle
Jquery Alert显示发送的数组:
"{"0":{"unit_id":1","ajax_seq_image":"111","ajax_seq_desc":"sample1"},"1":{"unit_id":1","ajax_seq_image":"222","ajax_seq_desc":"sample2"},"2":{"unit_id":1","ajax_seq_image":"333","ajax_seq_desc":"sample3"}}"
控制台向我显示查询尝试的以下结果:
<b>Warning</b>: Invalid argument supplied for foreach() in <b>/home/cpardonc/public_html/mw/test_form_process2.php</b> on line <b>32</b><br />
Error with INSERT. INSERT INTO unit_test (`unit_id`,`seq_img`,`seq_desc`) VALUES
答案 0 :(得分:2)
你的json格式不好。你错过了一个&#34;
应该是这样的
{"0":{"unit_id":"1","ajax_seq_image":"111","ajax_seq_desc":"sample1"},"1":{"unit_id":"1","ajax_seq_image":"222","ajax_seq_desc":"sample2"},"2":{"unit_id":"1","ajax_seq_image":"333","ajax_seq_desc":"sample3"}}
但是就是这样。
{"0":{"unit_id":1","ajax_seq_image":"111","ajax_seq_desc":"sample1"},"1":{"unit_id":1","ajax_seq_image":"222","ajax_seq_desc":"sample2"},"2":{"unit_id":1","ajax_seq_image":"333","ajax_seq_desc":"sample3"}}
看到区别?
答案 1 :(得分:0)
如果您错过了原始问题开头时发布的更新解决方案...... 我意识到发送这个数组不应该这么复杂。我回去修改了我的原始jquery脚本以推送()[]项目。
var seqImg = new Array();
$('input[name="seqImg[]"]').each( function() {
seqImg.push($(this).val());
} );
使用ajax,我使用了data: {seqImg:seqImg}
和async:false
的附加配置,以确保序列保持正确的顺序。
在PHP ...
$sql= "INSERT INTO unit_test(`unit_id`,`seq_img`) VALUES ";
$i=0;
$seqImgs_count = count($seqImgs);
//$data = $seqImgs_count;
//echo $data;
foreach($seqImgs as $item) {
$end = ($i == $seqImgs_count-1) ? ';' : ',';
$sql .= "('".$unit_id1."','".$item."')".$end;
有效!