Javascript 从servicenow中的REST调用获取PNG图像作为响应,响应为垃圾字符

Javascript 从servicenow中的REST调用获取PNG图像作为响应,响应为垃圾字符,javascript,ajax,javascript-events,servicenow,Javascript,Ajax,Javascript Events,Servicenow,我在这里遇到了这样的情况:我从servicenow中的REST调用中得到PNG图像作为响应,响应是垃圾字符,如下所示,我正在编写服务器脚本,该脚本接受响应并转换为字符串,它将返回到客户端UI动作脚本以作为图像呈现回UI页面。我找不到任何类似的案例,如果有人遇到过类似的情况,请大家分享。任何帮助都将不胜感激 REST响应: IHDRU� ��bKGD������� IDATx��{\T��� o"r�("r ���J(/���L��f�Syˬcio ��x��T� S�$=��J

我在这里遇到了这样的情况:我从servicenow中的REST调用中得到PNG图像作为响应,响应是垃圾字符,如下所示,我正在编写服务器脚本,该脚本接受响应并转换为字符串,它将返回到客户端UI动作脚本以作为图像呈现回UI页面。我找不到任何类似的案例,如果有人遇到过类似的情况,请大家分享。任何帮助都将不胜感激

REST响应:

    IHDRU�  ��bKGD������� IDATx��{\T��� o"r�("r ���J(/���L��f�Syˬcio ��x��T�
    S�$=��JO�GE1 �xA@ T  �\��g���53kX��}? >ʞg�<���ڿ��� �/_V� � �Л���hj A A r������Ro�ݻwS�!� ��%���@�*� � c@�*� � #@�*� � #`�[B A a~DEE5�=44���T�"� �h���P���bԨQ�� �*UA A Z(++Crr2,--��� ++�C' T A A4��۷����nݺ�gϞ8�<z��UO�*� � �x��!� 
    kkk@HHH�z T A A4@nn.rss�m���A A  �Du� � #A � � �  �&����ӧn��M� �  ���zPU^��|�)`�/���u�&vD A DS�:Q�U·����=���.X�Ď� �hj,,,0z�hXXXT* ���������{�p��o5����[�� � ���� ������AMM 233akk�Uo����W���\�{Uy9��^݄�� � �~��!++ ǎ ñcǐ��   �z� TM  ����(�9 o''���dL  k�9YYY��g�@ٱcLz�^X�r� �y��E��Y�� ��r�ͪ�kVx�f��5+��vJ��� � Ƙ1c0f�   < gΜѪ7�A�>TTTp��E�v�xa���7�杧 ��f�SV ���7�^�Y��U/׬���� ���666�t���\�P]Q����E/W��w�^��UOY1\/W�O�-.Z���M�]�Ӹx�k�Y�r�
    KN��Y)..��1����� �/_V@�޽�b@�|��'X�n]S� �h�T�*��R+IZ�@ g7������ c � "**�ޒ
    ������^��I?rb�@��EHE�¢��o��;O/r�ͪ�� ���o����T�vR� �jʸx�k�Y�r�
    KN�ڬ��� �*++�P(���HOO��$ �� R�9..Lz��Y|����;== 6���>O��S ߬z ߼�o<��<s+W�j}��L��ҫ�ӺءBU!��M����� �_aɉ�� ?{��<?%%
    ��y��T ��2��{ �鿴�4��� ] � %�0�*��  �\}l�yz��oV=e�p�\}�� = `�^�vR� ���;K;�{�k�Y�r�
    KN�ڬ�47S�N������͛��lll��� GG�::��? T=��T A�E�= �ߔ�I���% ���KN>s�� ?�~��iQyyyHLLDppp  ͩ2Q�g��"� �'�0��f�SV ��
....truncated since its too long
IHDRU�  ��bKGD������� IDATx��{\T��� o“r�(“r���J(/���L��F�西奥��x��T�

s�$=��乔�GE1�xA@T�\��G���53kX��}? >ʞg�O��S߬z߼�o您正在以二进制方式传递数据……旧的javascript无法处理二进制数据。

这是显示ajax图像的正确/现代方式

但是检查兼容性

有一种更为兼容的方式来实现这一点

new Uint8Array
但我注意到一些内存泄漏


如果您愿意,我也可以发布该代码。

所以我很清楚——客户端执行一个请求,服务器用某种二进制到字符串的PNG表示进行响应,您希望转换“PNG字符串”回到客户端的映像?在Servicenow中,有一个目录客户端脚本调用服务器脚本,服务器脚本调用REST调用(这是处理REST消息的单独模块),REST调用的响应是文章中提到的原始垃圾,因此在服务器脚本中,我已转换为一些base64格式,这些格式将发送回客户端脚本,客户端脚本将在UI页面中间接发布感谢快速响应,如果您计划使用此功能,请注意脚本使用的内存…内存非常紧张。因此,请删除每个图像如果你创建的正确,你会很快填满它。顺便说一句,我没有投反对票。这对我来说也发生了。问题是我正在使用servicenow附带的REST api,这就是脚本include(服务器脚本)的外观,它基本上完成了所有服务器端处理var tmk_pull_graphs=Class.create();tmk_pull_graphs.prototype=object.extendsObject(AbstractAjaxProcessor,{getgraphresponse:function(){var r=new RESTMessage('tmk_xxxxx get_graph','get');r.setString参数('graphur',this.getParameter('sysparm_io');var response=r.execute();因此,需要将响应对象转换为form base64格式,该格式可以发送到客户端脚本,并以img src的形式呈现=“data:image/png;base64window.URL.createObjectURL==data:image/png;base64,测试代码并检查图像链接。我认为还有一个函数可以在您正在使用的库中转换数据。我向您展示了现代/本地方法。
new Uint8Array