通过Ajax

时间:2015-06-30 05:52:32

标签: php jquery ajax

更新解决方案

我意识到发送这个数组不应该这么复杂。我回去修改了我的原始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。这似乎让我接近,但并不完全在那里。

PHP

// 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 

2 个答案:

答案 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;

有效!