2017-08-23 8 views
0

私は一度に複数のバーコードを生成し、生成されたバーコード番号をデータベースに保存しようとしています。今でも私は の複数のバーコードを生成しましたが、データベースに保存する際に問題がありました。今までどのように配列の値をキャプチャし、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%"}); 

    } 
} 

今私の変数パトロンで、それが複数生成されたバーコード番号が含まれています。今私は、配列に守護神のバーコード番号をプッシュし、AJAXを介してyii2コン​​トローラで配列を渡す必要がありますか?どうすればいいですか?私は考えていませんでした。

+0

この** getbarcode()**では、AJAXを使用したかったですか? –

答えて

0

まず、array_barcodeの1つの配列を作成し、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"); 

    } 
} 
?> 
+1

ありがとう!できます !! –

関連する問題