У меня есть форма, которая загружает файл в фиале на удаленный сервер. В результате при представлении url-сервер возвращает данные json с результатом операции, который мой iframe ловит.Получение ответа от удаленного сервера после загрузки файла в 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/
EDIT
Я ранее пытался:
$('#upload_target').load(function() {
var ret = frames['upload_target'].document.getElementsByTagName("body")[0].innerHTML;
var data = eval("("+ret+")");
});
Но возникает «разрешения отказано ' ошибка.
Смотрите мой обновленный ответ. – 2010-11-30 17:50:55
читайте это: http://stackoverflow.com/questions/364952/jquery-javascript-accessing-contents-of-an-iframe – 2010-12-02 17:22:21
Возможно, вы захотите установить принятый ответ. – 2010-12-05 13:16:59