来自响应的数据是无法设置为 iframe 的符号
Posted
技术标签:
【中文标题】来自响应的数据是无法设置为 iframe 的符号【英文标题】:Data from response is symbols unable to set to iframe 【发布时间】:2018-08-11 02:37:22 【问题描述】:我想检查 Api 的响应是否成功,然后将其放入 iframe。
如果我像这样调用它两次......它可以工作。
function getPDF(fileDirectorGuid)
if ($('#viewDownloadWindow').is(":visible"))
$.ajax(
url: $('#fdApiURL').val() + 'getDocAsPDF' + FIRST_ARGS + '&guid=' + fileDirectorGuid + '&fallbackToNative=true',
type: 'GET',
success: function (data)
if (data == null)
alert("failed");
else
$('#pdfFrame').attr('src', $('#fdApiURL').val() + 'getDocAsPDF' + FIRST_ARGS + '&guid=' + fileDirectorGuid + '&fallbackToNative=true');
,
error: function (jqXHR, textStatus, errorThrown)
alert("Failed");
);
但是我不想调用这个两次,这并没有像我想象的那样工作
function getPDF(fileDirectorGuid)
if ($('#viewDownloadWindow').is(":visible"))
$.ajax(
url: $('#fdApiURL').val() + 'getDocAsPDF' + FIRST_ARGS + '&guid=' + fileDirectorGuid + '&fallbackToNative=true',
type: 'GET',
success: function (data)
if (data == null)
alert("failed");
else
$('#pdfFrame').attr('src', data);
,
error: function (jqXHR, textStatus, errorThrown)
alert("Failed");
);
在调试器中查看时数据看起来像这样
"%PDF-1.6
1 0 obj
<<
/Length 2 0 R
/Filter /FlateDecode
>>
stream
x��[�%Iv�wO�����H�|��8&`%ِږ8�.���D�J�h ��^of�Z�;wsj�g�<�4��O�X�Nq���c��������l����������7��?����>���S������4��>�y||��z�<J����Gݏ�c�?C����6�����?
以此类推。
【问题讨论】:
【参考方案1】:iframe 的 src 属性是一个 url,您正在设置实际的 pdf 数据。您可以使用 blob url 来实现您的目标
$.ajax(
url: $('#fdApiURL').val() + 'getDocAsPDF' + FIRST_ARGS + '&guid=' + fileDirectorGuid + '&fallbackToNative=true',
type: 'GET',
xhr:function()
var xhr = new XMLHttpRequest();
xhr.responseType= 'blob'
return xhr;
,
success: function (data)
if (data == null)
alert("failed");
else
var url = window.URL.createObjectURL(data);
$('#pdfFrame').attr('src', url);
,
error: function (jqXHR, textStatus, errorThrown)
alert("Failed");
);
【讨论】:
太好了,我知道我错过了一些相当简单的东西,这很有效。以上是关于来自响应的数据是无法设置为 iframe 的符号的主要内容,如果未能解决你的问题,请参考以下文章
“由于语音响应为空,无法将 Dialogflow 响应解析为 AppResponse”,使用烧瓶助手