如何在javascript中捕获数组中的值并返回Yii2控制器中的值?

时间:2017-08-23 07:02:52

标签: javascript php jquery yii2

  

我正在尝试一次生成多个条形码,并将生成的条形码数字保存在我的数据库中。现在我已经生成了   多个条形码但我在将其保存到数据库时遇到了问题。

我的代码到现在为止: -

   function getbarcode(num,barcode)
  {

    for (var i = 1; i <= num; i++) {
     var barcodenum = parseInt(barcode)+parseInt(i);
     var patron= barcodenum.toString();  
     var type = "code11";
     var settings = {
      barWidth: 2,
      barHeight: 50,
      moduleSize: 5,
      addQuietZone: true,
      marginHRI: 5,
      bgColor: "#FFFFFF",
      color: "#000000",
      fontSize: 10,
      output: "css",
      posX: 0,
      posY: 0,
      fontOptions: "bold",
    };
    $('#barcoderesult').append('<div id="showBarcode'+ i +'" 
    style="float:left" />');
    $("#showBarcode"+i).barcode(patron, type, settings); 
    $("#showbarcode"+i).animate({height: "100%", width: "100%"}); 

  }
}
  

现在在我的变量顾客中,它包含多个生成的条形码编号。现在我需要将patron中的条形码数字推送到一个数组并通过ajax在yii2控制器中传递数组?我该怎么做 ?我没有任何想法。

1 个答案:

答案 0 :(得分:0)

首先,创建一个数组,即array_barcode并使用JavaScript Array push() Method将值填充到此数组中。然后,在for循环之后,如果它不为空,则通过AJAX将这些数组值传递给控制器​​。

<script>
function getbarcode(num, barcode){

  var array_barcode = [];

  for (var i = 1; i <= num; i++) {
    var barcodenum = parseInt(barcode) + parseInt(i);
    var patron = barcodenum.toString();
    array_barcode.push(patron); //Push generated barcode into array 'array_barcode'

    var type = "code11";
    var settings = {
      barWidth: 2,
      barHeight: 50,
      moduleSize: 5,
      addQuietZone: true,
      marginHRI: 5,
      bgColor: "#FFFFFF",
      color: "#000000",
      fontSize: 10,
      output: "css",
      posX: 0,
      posY: 0,
      fontOptions: "bold",
    };
    $('#barcoderesult').append('<div id="showBarcode' + i + '"style = "float:left" / > ');
    $("#showBarcode" + i).barcode(patron, type, settings);
    $("#showbarcode" + i).animate({height: "100%", width: "100%"});
  }

  if(array_barcode.length > 0){//If array is not empty
    $.ajax({
      //url: "/controller-name/controller-action-name",
      url: "/MyController/my-action",
      type: "POST",
      data: {array_barcode : array_barcode},
      success: function (data) {
        alert("Success");
      },
      error: function () {
        alert("Error Ocurred");
      },
    });
  }
}
</script>

<强>控制器

因为提供的信息不多。因此,我假设控制器名称为MyController,操作名称为MyAction。现在,在操作MyAction中,检查请求是否是AJAX类型。否则,抛出错误。通过Yii::$app->request->post()检索数组值。

<?php

class MyController
{

  .
  .
  .
  public function actionMyAction(){

    if (Yii::$app->request->isAjax) {

      $array_barcode = Yii::$app->request->post('array_barcode');
      foreach($array_barcode as $barcode){

        /*
         * Your Logic
         * Save '$barcode' to database
         */

      }


    }
    throw new ForbiddenHttpException("Problem Ocurred");

  }
}
?>