这就是我想要做的: 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;
答案 0 :(得分:1)
你的意思可能只是:
var uri = '/viewer/loaddrawing/';
document.getElementById('iframetitle').src = uri + '?key=' + value;
不涉及JSON,因此iframe
将直接获得PDF。但是,请注意客户端必须具有PDF查看器插件,否则浏览器将要求下载提示。