Асинхронный междоменный запрос POST через JavaScript? - PullRequest
8 голосов
/ 22 января 2009

Я мог бы просто создать форму и использовать ее для выполнения POST-запроса к любому сайту. Дело в том, что метод FORM не асинхронный, мне нужно знать, когда страница закончила загрузку. Я пытался возиться с этим, используя iframe с формой внутри, но безуспешно.

Есть идеи?

EDIT

к сожалению, я не могу контролировать данные ответов, они варьируются от XML, JSON до простого текста.

Ответы [ 5 ]

11 голосов
/ 22 января 2009

Вы можете захватить событие onload для iframe. Нацельтесь на form на iframe и прослушайте загрузку. Вы не сможете получить доступ к содержимому iframe, только к событию.

Попробуйте что-то вроде этого:

<iframe id='RS' name='RS' src='about:blank' onload='loaded()'></iframe>

<form action='wherever.php' target='RS' method='POST'>...</form>

блок скрипта:

var loadComplete = 0
function loaded() {
    //avoid first onload
    if(loadComplete==0) {
        loadComplete=1
        return()
    }
    alert("form has loaded")
}
2 голосов
/ 22 января 2009

Если вы хотите делать междоменные запросы, вам следует либо сделать JSON-вызов, либо использовать прокси-сервер. Серверный прокси легко настроить, не зная, почему люди так его избегают. Установите в нем правила, чтобы люди не могли использовать прокси-сервер для запроса других вещей.

1 голос
/ 22 января 2009

Если данные, возвращаемые из междоменной публикации, представляют собой JSON, вы можете динамически добавить тег сценария, указывающий на URI, который возвращает данные. Браузер загрузит этот «скрипт», к которому затем вы сможете получить доступ из другого javascript.

0 голосов
/ 22 января 2009

YUI3 's IO объект предлагает междоменные запросы, однако он делает это, используя небольшой элемент управления Flash, который встраивается на страницу.

Пока идет работа над безопасными междоменными запросами из JavaScript, в настоящее время вам нужно использовать плагин, такой как Flash или Silverlight, в качестве моста для выполнения запроса.

0 голосов
/ 22 января 2009

Вы не можете делать что-либо междоменное с использованием JavaScript. Вам придется использовать внутренний язык, такой как PHP или asp или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...