У меня есть форма, которая загружает файл в виде файла на удаленный сервер.В результате на 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+")");
});
Но возникает ошибка «Отказано в доступе».