используя тот же файл javascript, но загружая разные данные каждый раз во время вызова AJAX - PullRequest
0 голосов
/ 17 апреля 2020
  • У меня есть массив javascript с несколькими переменными ....
  • Я перебираю этот массив
  • во время каждого l oop, я звоню function print_tag

Ниже приведена первая функция

function print_tags(all_tags,quantity_to_print) {
var print_array = all_tags.split(',');

let i = 0;
do { 
print_tag(print_array[i],quantity_to_print,i);
i++;
} while (i < print_array.length); 
}

Все, что нужно сделать, - это взять массив и пройтись по каждой записи массива и запустить другую функцию. он содержит AJAX.

function print_tag(tag,quantity_to_print,v) { 

    setTimeout(function() { 
    $.ajax({
  type: "POST",
  ajaxI: v,
  url: "<?php echo http() . $websitedomain .'/Manage/js/DYMO/print_barcode.php'; ?>",
  data: { "inv_id": tag, "lcount": quantity_to_print },
  dataType: 'html',
  success: function(data){

      $('#resultDiv_' + tag).html(data);
      console.log(tag);

  } 
});

    }, 15000 * v);

}   

Все это указывает на то, что страница, вызываемая функцией AJAX, использует файл SINGLE javascript. Это файл, который печатает этикетки на принтере DYMO. Под обычным сценарием ios это работает нормально, потому что я посылаю 1 этикетку для печати каждый раз; однако сейчас я запускаю страницу, на которой нужно отправить несколько (иногда до 24) разных тегов, которые необходимо распечатать. Каждый тег отправляется через индивидуальный запрос AJAX. Страница PHP загружает правильные данные, потому что я вижу вывод как в HTML, так и в консоли; однако файл javascript каждый раз печатает один и тот же тег. Файл javascript не обновляет информацию о новом теге. Я не уверен, что файл javascript не перезагружается, или он каким-то образом сохраняет информацию. Ниже приведен файл javascript ....

Моя первая мысль: возможно, файл javascript не "закрывается" и просто вызывается, что печатает другой из предыдущих тегов. Но я не эксперт по 1056, так что это может быть сумасшедшим разговором. Но каждый раз, когда файл javascript загружается, мне нужно, чтобы он вводил НОВЫЕ данные, а не те же самые данные из первого тега.

//----------------------------------------------------------------------------
//
//  $Id: TextMarkup.js 38773 2015-09-17 11:45:41Z nmikalko $ 
//
// Project -------------------------------------------------------------------
//
//  DYMO Label Framework
//
// Content -------------------------------------------------------------------
//
//  DYMO Label Framework JavaScript Library Samples: Text Markup
//
//----------------------------------------------------------------------------
//
//  Copyright (c), 2011, Sanford, L.P. All Rights Reserved.
//
//----------------------------------------------------------------------------


(function()
{
    // stores loaded label info
    var label;

    function escapeXml(xmlStr)
    {
        var result = xmlStr;
        var findReplace = [[/&/g, "&amp;"], [/</g, "&lt;"], [/>/g, "&gt;"], [/"/g, "&quot;"]];

        for(var i = 0; i < findReplace.length; ++i) 
            result = result.replace(findReplace[i][0], findReplace[i][1]);

        return result;
    }


    // addition                 
function repeat(func, times) {
    func();
    --times && repeat(func, times);
}


    // called when the document completly loaded
    function onload()
    {

         var textMarkupInput = document.getElementById('textMarkupInput');
        //var printTextMarkupButton = document.getElementById('printTextMarkupButton');
        var split = textMarkupInput.value.split(' | ');



        //var printersSelect = document.getElementById('printersSelect');
        //var printer = 'DYMO LabelWriter 450 Twin Turbo';
        //var printer = 'DYMO LabelWriter 4XL';
        var printer = split[0];
        //var textInput = document.getElementById('textInput');
        //var printButton = document.getElementById('printButton');






        // loads all supported printers into a combo box 
        function loadPrinters()
        {
            var printers = dymo.label.framework.getPrinters();
            if (printers.length === 0)
            {
                alert("No DYMO printers are installed. Install DYMO printers.");
                return;
            }

          /*  for (var i = 0; i < printers.length; i++)
            {
                var printer = printers[i];
                if (printer.printerType == "LabelWriterPrinter")
                {
                    var printerName = printer.name;

                    var option = document.createElement('option');
                    option.value = printerName;
                    option.appendChild(document.createTextNode(printerName));
                    printersSelect.appendChild(option);
                }
            }*/
        }











        //printTextMarkupButton.onclick = function()
        $( document ).ready(function()

        {
            try
            {
                if (!label)
                {
                    alert("Load label before printing");
                    return;
                }

                // set data using LabelSet and text markup
                var labelSet = new dymo.label.framework.LabelSetBuilder();
                var record = labelSet.addRecord();







                var SKU = '';
                var DESCRIPTION = '';
                var BARCODE = '';
                var NETWEIGHT = '';
                var GROSSWEIGHT = '';




                SKU += '<b>';
                SKU += split[3];
                SKU += '</b>';

                DESCRIPTION += '<b>Description</b><br />';
                DESCRIPTION += split[4];


                BARCODE += split[5];

                console.log(split[5]);

                NETWEIGHT += '<b>';
                NETWEIGHT += split[6];
                NETWEIGHT += '</b>';

                GROSSWEIGHT += '<b>';
                GROSSWEIGHT += split[7];
                GROSSWEIGHT += '</b>';


                record.setTextMarkup('SKU', SKU);
                record.setTextMarkup('DESCRIPTION', DESCRIPTION);
                record.setTextMarkup('BARCODE', BARCODE);
                record.setTextMarkup('NETWEIGHT', NETWEIGHT);
                record.setTextMarkup('GROSSWEIGHT', GROSSWEIGHT);





repeat(function () { 


//regular code

                                //setlabel(labelSetBuilder);
//var params = dymo.label.framework.createLabelWriterPrintParamsXml({twinTurboRoll: dymo.label.framework.TwinTurboRoll.Right});
    var params = dymo.label.framework.createLabelWriterPrintParamsXml({twinTurboRoll: split[1]});
                //var params = '';

                //label.print(printersSelect.value, params, labelSet.toString());
                label.print(printer, params, labelSet.toString());




// addition
}, lcount); 






            }
            catch(e)
            {
                alert(e.message || e);
            }



        });











        function getAddressLabelXml() {



        function loadXMLDoc(theURL)
    {
        if (window. XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari, SeaMonkey
            xmlhttp=new XMLHttpRequest();
        }
        else
        {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                //alert(xmlhttp.responseText);
            }
        }
        xmlhttp.open("GET", theURL +'?_=' + new Date().getTime(), false);
        xmlhttp.send();
    }

        var xmlhttp=false;
//loadXMLDoc('https://www.americanstrapping.com/Manage/js/DYMO/STEEL_STRAPPING_LARGE_LABEL.label');
loadXMLDoc(split[2] +'.label');

if(xmlhttp==false){ alert('NOPE'); }
else { return xmlhttp.responseText; }   




        }

        function loadLabelFromWeb()
        {            





            // use jQuery API to load label
           // $.get("Address.label", function(labelXml)

           // {



            label = dymo.label.framework.openLabelXml(getAddressLabelXml());


            // }, "text");
        }

        loadLabelFromWeb();
        // load printers list on startup
        loadPrinters();
    };

    function initTests()
    {



        if(dymo.label.framework.init)
        {
            //dymo.label.framework.trace = true;
            dymo.label.framework.init(onload);
        } else {
            onload;
        }
    }




        window.onload = initTests();


} ());

НИЖЕ ДАННЫЕ ОТПРАВЛЯЮТСЯ НА ПОСЛЕДНИЙ КОД JAVASCRIPT. ..ВЫ МОЖЕТЕ УВИДЕТЬ, ЧТО штрих-коды различны ....

  1. DYMO LabelWriter 450 Twin Turbo | Левый | https://www.......com/Manage/js/DYMO/STEEL_STRAPPING_SMALL_LABEL | HSE-HT24114-TEST-NCW | 1-1 / 4 "X .024 ИСПЫТАТЕЛЬНЫЙ МАТЕРИАЛ HSE-HT | TEST-126725 | 600 | 645
  2. DYMO LabelWriter 450 Twin Turbo | Левый | https://www......com/Manage/js/DYMO/STEEL_STRAPPING_SMALL_LABEL | HSE-HT24114-TEST-NCW | 1-1 / 4 "X .024 HSE-HT ИСПЫТАТЕЛЬНЫЙ МАТЕРИАЛ | TEST-795061 | 600 | 645

Но сколько бы раз я не проходил, этикетка 1 печатается каждый раз. Он никогда не переходит к другим данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...