Отправить на внешний веб-сайт и отправить сайт с перенаправления на другую страницу

Мне нужно отправить страницу на внешний веб-сайт. Не проблема.

Проблема в том, что внешний веб-сайт отображает успешное сообщение, что не очень хорошо, мне нужно, чтобы сайт, с которого он был отправлен, был перенаправлен на что-то более удобное для пользователя. Внешний веб-сайт не будет перенаправляться, что, как мне кажется, может быть самым простым, если я передам ему страницу перенаправления на страницу.

Во всяком случае, какие-либо предложения для самого простого и менее трудоемкого подхода к этому? Я читал о наличии iFRAME. Есть ли другой способ?

Заранее спасибо!

Это статические HTML-страницы.


person JeiPM    schedule 13.05.2009    source источник


Ответы (3)


Я предполагаю, что вы не можете трогать разметку внешнего сайта.

Если они статичны, вам не хватает решений. Я часто использовал библиотеку cURL для обеспечения такой функциональности (публикация на внешний сайт за кулисами).

Возможно, вы сможете сделать это с помощью iframe и JavaScript. Установите цель вашей формы на имя iframe (возможно, скройте iframe с помощью CSS). Затем он должен быть представлен нормально.

person alex    schedule 13.05.2009

Поскольку вы говорите, что «внешний сайт не будет перенаправлять», я предполагаю, что вы не можете его контролировать.

Это означает, что у вас есть три возможных подхода, которые я могу придумать.

  1. Проксируйте запрос через свой собственный сервер. Это безопасный вариант, но он не будет использовать файлы cookie, которые сторонний сайт ожидает от пользователя.
  2. Используйте iframe и предполагайте, что он никогда не выйдет из строя (потому что вы не можете прочитать результат). Это может привести к ошибке или тайм-ауту, и вы не сможете это компенсировать.
  3. Используйте Java-апплет (или аналогичный) и попросите пользователя принять серию страшных предупреждений безопасности (если у него даже установлен подключаемый модуль Java)
person Quentin    schedule 13.05.2009

Решение IFRAME кажется самым простым, но в случае возникновения ошибки вы можете этого не заметить.

Если отправляемый сайт возвращает предсказуемую разметку, то маршрут AJAX будет предпочтительнее, так как он позволяет вашему сайту анализировать результаты публикации и реагировать на них. Однако он уязвим для пользователя, отключившего JavaScript.

Возможно, лучшим решением будет написать разметку для использования технологии IFRAME, но добавить в форму обработчик onsubmit. Если JavaScript включен, то обработчик может делать вещи AJAX — в противном случае сработает решение IFRAME.

Просто не забудьте добавить «return false» в атрибут onsubmit, чтобы предотвратить отправку IFRAME при включенном JavaScript.

<form action="http://external.server/submission.html" 
      target="id_of_your_IFRAME" 
      onsubmit="submitViaAJAX(); return false">
    ... form fields ...
</form>
person belugabob    schedule 13.05.2009
comment
Поскольку это внешний сайт, над которым автор не имеет никакого контроля, любой подход Ajax столкнется с той же политикой происхождения и потерпит неудачу. - person Quentin; 13.05.2009
comment
Не обязательно — jquery вполне способен поместить возвращенную разметку в DOM, которую можно интерпретировать для процесса принятия решения. - person belugabob; 13.05.2009