У меня есть форма, которая загружает файл в виде файла на удаленный сервер. В результате в URL-адресе отправки сервер возвращает данные json с результатом операции, которую улавливает мой iframe.
{'result': 'true' or 'false'}
Теперь я хотел бы получить этот json как обратный вызов моего iframe. Я знаю, что для этого мне нужен jsonp, поскольку это межсайтовый вызов. Вот моя функция с примером кода с сайта IBM :
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+")");
});
Но возникает ошибка «разрешения запрещены».