【发布时间】:2011-05-15 16:31:02
【问题描述】:
我有一个表单,可以将框架中的文件上传到远程服务器。结果在提交 url 服务器返回带有操作结果的 json 数据,我的 iframe 捕获了这些数据。
{'result': 'true' or 'false'}
现在我想检索这个 json 作为 iframe 的回调。我知道我需要 jsonp 来实现这一点,因为它是一个跨站点调用。这是我的函数,带有来自IBM' site 的示例代码:
function fileUploadFunction(){
var fileUploadForm = $('#file_upload_form');
fileUploadForm.attr('action', uploadURL);
fileUploadForm.submit();
$('#upload_target').load(function () {
alert("IFrame loaded");
$.getJSON(uploadUrl+"&callback=?", function(data) {
alert("Symbol: " + data.symbol + ", Price: " + data.price);
});
});
};
但是这里很少出现问题。首先 - 我的 uploadUrl 只是 "http://something/" 。我需要它来支持带有$callback= 后缀的呼叫吗?
其次 - 服务器仅作为文件上传的结果给出响应。因此,我需要获取存储在 iframe 中而不是指定 url 中的结果。如何解决?
这是链接。注意表单内隐藏的 iframe。服务器的结果显示在那里。 :
http://ntt.vipserv.org/artifact/
编辑
我之前尝试过:
$('#upload_target').load(function () {
var ret = frames['upload_target'].document.getElementsByTagName("body")[0].innerHTML;
var data = eval("("+ret+")");
});
但它会引发“权限被拒绝”错误。
【问题讨论】:
-
你可能想设置一个接受的答案..
标签: javascript iframe cross-domain response jsonp