Асинхронный междоменный POST-запрос через JavaScript?

StackOverflow https://stackoverflow.com/questions/467008

  •  19-08-2019
  •  | 
  •  

Вопрос

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

Есть какие-нибудь идеи?

Редактировать

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

Это было полезно?

Решение

Вы можете запечатлеть 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")
}

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top