невозможно сделать вызов AJAX из jsPDF из HTML - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть простая структура, которая генерирует PDF из jsPDF, получает 'datauristring' и передает его в запрос AJAX.Однако метод AJAX не срабатывает.Когда он пытается «отправить», он генерирует исключение «h не определено».Я понял это по трассировке запросов XHR, и это появилось в библиотеке jQuery.Могу ли я не запускать запрос AJAX так скоро после обратного вызова от jsPDF?

Следует отметить, что я отправляю PDF в службу, которая объединяет этот PDF с другим и возвращает совершенно новый документ.

var docX = new jsPDF("p", "pt", "letter");
margins = {
    top: 20,
    bottom: 20,
    left: 20,
    width: 522
};
specialElementHandlers = {
  // element with id of "bypass" - jQuery style selector
  '#bypassme': function (element, renderer) {
      // true = "handled elsewhere, bypass text extraction"
      return true
  }
};
docX.fromHTML (
    document.getElementById('productModalContent'),
    margins.left,
    margins.top, {
        'width' : margins.width,
        'elementHandlers': specialElementHandlers
    },
    function (dispose) {
        specDoc = (docX.output('datauristring'));
        console.log(dispose);
        //docX.save('asdfas.pdf');
        //console.log(specDoc);
        processPDF(specDoc);
    }, margins
);  
function processPDF(doc) {
  console.log(doc.length);

  $.ajax({
      type: "POST",
      url: "https://someurl",
      data: {
          'partNumber' : '$!{rawPartNumber}',
          'region' : '$!{regionContentlet.code}',
          'doc' : doc
      },
      cache: false,
      success: function(data) {
          console.log("success?");
          var link=document.createElement('a');
          link.href='data:application/pdf;base64,' + data;
          link.download="myfile.pdf";
          link.setAttribute('target', '_blank');
          link.click();
      },
      error: function(data) {
          console.log(data); 
      }
  });

}

РЕДАКТИРОВАТЬ: удалить ajax и добавить выборку.

const response = await fetch('myurl', {
        method: 'POST',
        body: {
            'partNumber' : '$!{rawPartNumber}',
            'region' : '$!{regionContentlet.code}',
            'myDiv' : doc
        }
    });
...