2016-10-03 2 views
0

Я использую следующий HTML-файл для проверки безгласного просмотра Autodesk Forge. Тестовый URL-адрес будет выглядеть так: http://localhost:8080/HeadlessViewer.html?token={{Bearer}}&urn={{base64URN}}Ошибка XMLHttpRequest для Viewer

Токен имеет scope = data: read, urn is base64 format.

<html> 
<head> 
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=no" /> 
</head> 
<body> 
    <div id="MyViewerDiv"></div> 

    <!-- The Viewer JS --> 
    <script src="https://developer.api.autodesk.com/viewingservice/v1/viewers/three.min.js?v=v2.10.*"></script> 
    <script src="https://developer.api.autodesk.com/viewingservice/v1/viewers/viewer3D.js?v=v2.10.*"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 

    <!-- Developer JS --> 
    <script> 
     function getParameterByName(name, url) { 
      if (!url) url = window.location.href; 
      name = name.replace(/[\[\]]/g, "\\$&"); 
      var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 
       results = regex.exec(url); 
      if (!results) return null; 
      if (!results[2]) return ''; 
      return decodeURIComponent(results[2].replace(/\+/g, " ")); 
     } 

     function initViewer(token, urn) { 
      var viewerApp; 
      var options = { 
       env: 'AutodeskProduction', 
       accessToken: token 
      }; 

      var documentId = atob(urn); // 'urn:<YOUR_URN_ID>'; 
      Autodesk.Viewing.Initializer(options, onInitialized); 

      function onInitialized() { 
       viewerApp = new Autodesk.Viewing.ViewingApplication('MyViewerDiv'); 
       viewerApp.registerViewer(viewerApp.k3D, Autodesk.Viewing.Viewer3D); 
       viewerApp.loadDocument(documentId, onDocumentLoaded); 
      } 

      function onDocumentLoaded(lmvDoc) { 
       var modelNodes = viewerApp.bubble.search(av.BubbleNode.MODEL_NODE); // 3D designs 
       var sheetNodes = viewerApp.bubble.search(av.BubbleNode.SHEET_NODE); // 2D designs 
       var allNodes = modelNodes.concat(sheetNodes); 
       if (allNodes.length) { 
        viewerApp.selectItem(allNodes[0].data); 
        if (allNodes.length === 1) { 
         alert('This tutorial works best with documents with more than one viewable!'); 
        } 
       } else { 
        alert('There are no viewables for the provided URN!'); 
       } 
      } 
     } 

     $(document).ready(function() { 
      var url = window.location.href, 
       token = getParameterByName('token', url), 
       urn = getParameterByName('urn', url); 
      initViewer(token, urn); 
     }); 
    </script> 
</body> 
</html> 

Однако он останавливается за исключением XMLHttpRequest.responseText. Пожалуйста, см. Прилагаемое изображение: Error image

+0

Вы можете повторить попытку в окне инкогнито/частного браузера? что должно избегать локального кеша. Кроме того, если у вас нет причины, рассмотрите возможность использования viewer3D.min.js (меньше) –

+0

Я использую Incognito и имею ту же ошибку. Я хотел использовать viewer3D.js для отладки кода Viewer, чтобы узнать, что происходит с этой ошибкой XMLHttpRequest. –

ответ

0

Я попробовал ваш код, просто заменив «accessToken: <>» и «var documentId = <>» и работал отлично. Глядя на ваш код, я считаю, что проблема может быть в следующей строке:

var documentId = atob(urn); // 'urn:<YOUR_URN_ID>'; 

atob функция будет расшифровывает строка, которая означает, что он не будет на Base64. Но documentId должен быть как:

var documentId = 'urn:c29tZSByYW5kb20gd29yZHMgaGVyZQ=='; 

Пожалуйста, убедитесь, что documentId правильно сформирован.

Наконец, обратите внимание на Viewer requires URL Safe encoding. Рассмотрим кодировку на сервере (безопаснее передавать) или делать это на стороне клиента, see this answer.

+0

var documentId = 'urn:' + urn; Я не должен расшифровывать строку, но сохранить Base64. Вот почему XMLHttpRequest не получает контент ответа. Спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^