Post to another page site works, but shows a blank page in the process

Обновить

November 2018

Просмотры

916 раз

2

Я отправляю значения в с веб-сайта ASP.NET на совершенно другом сайте (Paypal на самом деле). Я совершаю это, возвращая страницу пользователя, который имеет все скрытые входы формы написаны, а затем функция Javascript, которая автоматически отправляет форму.

Процесс должен быть бесшовными, но пустая страница заметно на пару секунд он показывает вверх. Пользователи просто должны нажать на кнопку на странице ASP.NET, а затем перенаправляется на Paypal. Но я впрыснуть эту пустую страницу в середине, чтобы размещать переменные в середине (переменные, такие как счета и информация, позиции заказа и т.д.). Пустая страница слишком заметна, и я надеюсь на любой лучший способ сделать это или предложения по делая процесс, кажется более цельным.

Вот метод я использую:

    public static void PostToRemote(string url, Dictionary<string, string> inputs)
    {
        if (String.IsNullOrEmpty(url))
            return;

        HttpContext context = HttpContext.Current;

        //CREATE UNIQUE FORM NAME
        string formName = "remoteform1";

        //ERASE ENTIRE RENDER OF CURRENT PAGE
        context.Response.Clear();

        //OUTPUT SINGLE FORM TO POST DATA
        context.Response.Write("<html><head></head>");

        //ON LOAD, PAGE WILL POST FORM TO NEW URL
        context.Response.Write(String.Format("<body onload=\"document.{0}.submit()\">", formName));
        context.Response.Write(String.Format("<form name=\"{0}\" method=\"{1}\" action=\"{2}\" >", formName, "post", url));

        //ADD PARAMETERS TO PAGE TO POST
        foreach (var item in inputs)
        {
            context.Response.Write(String.Format("<input name=\"{0}\" type=\"hidden\" value=\"{1}\">", item.Key, item.Value));
        }

        context.Response.Write("</form>");
        context.Response.Write("</body></html>");

        context.Response.End();
    }

Любые предложения в делая это более цельным и более приятным для пользователя? Спасибо!

1 ответы

0

Что вы можете сделать, это вместо того, чтобы писать PAYPAL формы в поток ответа, создать отдельную страницу asp.net и в пределах этой страницы написать информацию формы PayPal вне с asp.net повторителем или подобным контролем. Дайте форму, которая была написано именем, так что вы можете получить доступ к нему с помощью JavaScript - для целей данного примера также предположите, что вы назвали форму «PayPal» (ID = «PayPal»). Увидеть ниже:

Затем поместить тег изображения с анимированными GIF, какой-то прогресс блесны. Хорошо, так что теперь здесь важная часть: добавить небольшую функцию Javacript на страницу, которая будет отвечать за размещение PAYPAL формы на PAYPAL сервера. Смотрите следующее для примера:

function submitform()
{
    document.forms["paypal"].submit();
}

Так что теперь все, что вам нужно сделать, это называют это «SubmitForm ()» функции из тела тега страницы, как следующие:

<body onload="submitform()">

Так вот что все это выглядит.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body onload="submitform()">
    <div style="text-align: center;">
        <h1>
            Redirecting to PayPal</h1>
        <img src="http://www2.lionair.co.id/assets/imgs/ajax-loader.gif" />
    </div>
    <form id="form1" runat="server">
        <!--This is where you write out the paypal form data - use a repeater or create a custom control-->
    </form>
    <script type="text/javascript">
function submitform()
{
    document.forms["paypal"].submit();
}
    </script>
</body>
</html>

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

Надеюсь, что это было полезно.

Наслаждайтесь!