【问题标题】:How do I use $.get and .each with each other如何相互使用 $.get 和 .each
【发布时间】:2021-04-29 10:30:03
【问题描述】:

我有一个带有 id 的复选框列表,我可以选择复选框并通过执行以下操作获取所有 id:

var order_id = [];      //array to store order ids from the checkboxes

var x = 0;  //count

checkboxes.each(function(){ //loop through the selected checkbox and store ids in array

  if ($(this).hasClass('active')) {

    order_id[x] = $(this).data('order-id');

    x++; //increment x

});//end each   

我想要将这些 ORDER ID 号打印到我的 dymo 标签打印机上,为此我需要使用 Dymo 提供的 XML 文件。该文件位于服务器上,我可以使用 $.get 获取该文件

$.get(url+"labels/dymo_19x51.xml", function(labelXml) {
  //framework
  var label = dymo.label.framework.openLabelXml(labelXml);

  //Order ID is set here
  label.setObjectText("TEXT", order_id[x]);

  //Label is printed here
  label.print(myDymoPrinter);

}, "TEXT");

我遇到的问题是,如果我选择 5 个复选框,将打印 5 个标签,但它们都是相同的,即会打印最后一个选择的标签 5 次。我无法让它遍历 $.get 函数中的 order_id 数组。我尝试在脚本中的不同点增加 x,但我无法实现。

感谢任何帮助。

非常感谢, 卡尔

【问题讨论】:

标签: javascript jquery arrays get each


【解决方案1】:

我最终这样做了。我使用 AJAX 并将 async 设置为 false

                                var order_id = $(this).data('order-id');
                                var qty = $(this).data('qty');
                                var delivery_method = $(this).data('shipping');
                                var full_name = $(this).data('fullname');
                                var dymo_txt = full_name +" (" + order_id + ")"+"\nQty: " + qty + "\n" + delivery_method;

                                $.ajax({
                                    type: 'GET',
                                    url: ajax_object.plugin_admin_assets+"labels/dymo_19x51.label",
                                    async: false,
                                    beforeSend: function() {
                                    },
                                    success: function(response) {
                                        try {
                                            var label = dymo.label.framework.openLabelXml(response);
                                            label.setObjectText("TEXT", dymo_txt);

                                            var printers = dymo.label.framework.getPrinters();
                                            if (printers.length == 0) {
                                                throw "No DYMO printers are installed. Install DYMO printers." + dymo_txt;
                                            }

                                            var printerName = "";

                                            for (var i = 0; i < printers.length; ++i) {
                                                var printer = printers[i];
                                                //check that we are printing to the correct label writer
                                                //can also use printer.printerType to get the the first label writer or if you only have 1
                                                if (printer.modelName == "DYMO LabelWriter 450") {
                                                    printerName = printer.name;
                                                    break;
                                                }//end if
                                            }//end for

                                            if (printerName == "") {
                                                throw "No LabelWriter printers found. Install LabelWriter printer";
                                            }
                                    
                                            label.print(printerName);
                                    
                                        }//end try  
                                    }//end success
                                }); //end ajax

【讨论】:

  • 不推荐使用设置async: false:请参阅the documentation,在async 下:“从jQuery 1.8 开始,不推荐使用async: false 和jqXHR ($.Deferred);您必须使用成功/错误/完成回调选项,而不是 jqXHR 对象的相应方法,例如 jqXHR.done()。"
猜你喜欢
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
相关资源
最近更新 更多