заполнение полей ввода данными json, которые затем отправляются на принтер

#javascript #jquery #html #json #ajax

#javascript #jquery #HTML #json #ajax

Вопрос:

я хочу заполнить поля ввода данными из json, а затем отправить их на принтер, а затем снова заполнить входные данные из последней строки -1 в БД, затем отправить на принтер, а затем последнюю строку -2, затем распечатать ее и т.д.. Мне удалось вернуть данные json из последних n вставленных строк из базы данных в зависимости от значения printmultiple

HTML

 <div id="printableArea">
<div align="center">

<input type="text" name="barcode2"  id="barcode2" required readonly >
<input type="text" name="barcodecountry" id="barcodecountry"  >
<input type="text" name="barcodecountry" id="barcodecountry2"  >

<br>
 <div id="print">
</div>

<label id="idbar">id.:</label><input type="text" name="barcodesurname" id="barcodesurname"  required readonly>
<br>
<br>
<label id="pricebar">price:</label><input type="text" name="barcodename" id="barcodename"  required readonly>
<input type="text" name="barcodecountry" id="barcodecountry3">
</div> 
</div>

</div>
  

область печати — это div, в котором заполняются входные данные, и я отправляю их на печать на принтер

В моем файле Js

 $(document).ready(function() {


    $('form').submit(function(event) {

        $('.form-group').removeClass('has-error'); // remove the error class
        $('.help-block').remove(); // remove the error text





        var formData = {
            'surname'       : $('input[name=surname]').val(),
            'name'      : $('input[name=name]').val(),

            'telephone' : $("#telephone").val(),
            'mail' : $("#mail").val(),
            'barcode' : $("#barcode").val(),
            'customid' : $("#customid").val(),
            'ticketprice' : $("#ticketprice").val(),
            'seat' : $("#seat").val(),
            'printmultiple' :$("#printmultiple").val()

        };

        $.ajax({
            type        : 'POST', 
            url         : 'process2.php',
            data        : formData,
            dataType    : 'json', from the server
            encode      : true
        })

            .done(function(data) {



                console.log(data); 

                if ( ! data.success) {
                        if (data.errors.surname) {
                        $('#surname-group').addClass('has-error');
                        $('#surname-group').append('<div class="help-block">'   data.errors.surname   '</div>');
                        }
                        else if (data.errors.name) {
                        $('#name-group').addClass('has-error'); 
                        $('#name-group').append('<div class="help-block">'   data.errors.name   '</div>'); 
                        }



                } else {

 $.each(data.added, function (i,it){

    $('#printableArea').append(data.added[i]);
 });

  for(i=0; i<data.added[13]; i  ){
                     $('#barcodecountry2').val(data.added[1]); 
                    $('#barcodesurname').val(data.added[0]);             
                    $('#barcodename').val(data.added[4]); 
                     $('#barcode2').val(data.added[2]);
                     $("#print").barcode(
    document.getElementById("barcode2").value,
    "code128" 
    );  
                $('#printableArea').print();
                 }

$('form').append('<div class="alert alert-success">'   data.message   '</div>');
    }
            })


            .fail(function(data) {


                console.log(data);
            });


        event.preventDefault();
    });

});
  

Я хочу, чтобы возвращенные данные из json заполняли входные данные, например, первые 5 элементов json должны быть заполнены, затем напечатаны, затем следующие 5 затем напечатаны. Я добавил код для печати в зависимости от значения printmultiple, но печатает только последнюю строку n раз

ниже я добавляю возвращенные данные json : Object { 0: "7784", 1: "2016-10-18 23:16:01.000000", 2: "16221458721646", 3: "2016-10-19", 4: "8", 5: "normal", 6: null, 7: "admin", 8: "DASDSADAS", 9: "7884", 18 more… }

Комментарии:

1. это может помочь, если вы покажете пример содержимого data переменной и ее структуры. Из интереса, однако, это довольно странный способ печати. Это отчет? Обычно людей не интересуют печатные формы с текстовыми полями и т.д., Они предпочитают, чтобы данные были красиво отформатированы и читабельны. Печатная форма обычно не будет выглядеть так красиво. Формы предназначены для ввода и захвата данных, а не для их отображения / печати.

2. форма предназначена для печати штрих-кодов с данными из БД, но если кто-то хочет напечатать, например, 5 штрих-кодов, я хочу, чтобы последние 5 строк были вставлены в БД, потому что штрих-коды принимают штрих-код 1 и печатаются на принтере

3. данные, возвращаемые из объекта json { 0: «7784», 1: «2016-10-18 23:16:01.000000», 2: «16221458721646», 3: «2016-10-19», 4: «8», 5: » обычный», 6: null, 7: «admin», 8: «DASDSADAS», 9: «7884», еще 18 … }

4. Я могу понять, для чего предназначена форма, я спрашивал, почему вы используете элементы формы в качестве носителя, а не какой-либо другой HTML, который было бы проще отформатировать красиво? элементы формы предназначены для ввода, а не для вывода. Пожалуйста, отредактируйте вопрос и включите образец JSON, правильно отформатированный — очень сложно прочитать код / данные, которые вставляются в комментарии 🙂

Ответ №1:

я нашел решение

    for(i=0; i<data.added[0].printmultiple; i  ){
                     $('#barcodecountry2').val(data.added[i].signintime); 
                    $('#barcodesurname').val(data.added[i].customid);             //get id 
                    $('#barcodename').val(data.added[i].ticketprice); 
                     $('#barcode2').val(data.added[i].barcode);
                     $("#print").barcode( //div id print
    document.getElementById("barcode2").value,// Value barcode (dependent on the type of barcode)
    "code128" // type (string)
    );