0

这就是我想要做的:1)浏览器向服务器发起一个ajax请求,要求一个pdf。2)服务器下载pdf,并返回pdf显示。3) 浏览器在预先存在的 iframe 中显示下载的 pdf。

下面是我的代码。它似乎停在 iframe 部分,但我怀疑它没有正确发送 pdf。

浏览器 index.html 文件:

var uri = '/viewer/loaddrawing/';
$.getJSON(uri, {key:value}, function(data, jqXHR){
    document.getElementById("iframetitle").src = uri;               
});

Django 服务器views.py 文件:

import requests
def loaddrawing(request):
    value = request.GET.get('key')
    #the key is used to generate a unique url, but for test purposes lets use the url shown below
    url = "http://cbmeturkey.com/media/109/test.pdf"
     response = urllib2.urlopen(url)
     some_data = response.read()
    return HttpResponse(some_data, mimetype='application/pdf')

编辑:

我还有一个问题:我不想在我的 index.html 文件中使用下面的代码,因为我想实际下载 pdf 并再次使用它。原因是我的 index.html 页面使用 javascript 来显示和隐藏 iframe,并且使用下面的代码,每次显示 iframe 时都会重新下载 pdf。

var uri = '/viewer/loaddrawing/';
document.getElementById('iframetitle').src = uri + '?key=' + value;

已解决:上述问题在 Augusto 的指示和以下 index.html 代码(仅加载一次 pdf)后得到解决,但请注意,现在我正在修改 div(名为“divtitle”)而不是 iframe:

var uri = '/viewer/loaddrawing/' + '?key=' + value;
var htm = '\<iframe src="' + uri +'" onload="downloadComplete()">\</iframe>';
document.getElementById('divtitle').innerHTML = htm;
4

1 回答 1

1

可能您的意思很简单:

var uri = '/viewer/loaddrawing/';
document.getElementById('iframetitle').src = uri + '?key=' + value;

不涉及 JSON,因此iframe将直接获得 PDF。但是,请注意客户端必须有一个 PDF-viewer 插件,否则浏览器会要求下载提示。

于 2013-09-09T14:30:22.523 回答