Публикация на другой странице сайта работает, но показывает пустую страницу в процессе - PullRequest
2 голосов
/ 23 октября 2010

Я отправляю значения с веб-сайта 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 голосов
/ 23 октября 2010

Что вы можете сделать, это вместо того, чтобы записать форму paypal в поток ответов, создать отдельную страницу asp.net и на этой странице записать информацию о форме paypal с помощью повторителя asp.net или аналогичного элемента управления. Дайте форме, в которой было написано имя, чтобы вы могли получить к ней доступ через javascript - в целях этого примера хорошо предположим, что вы назвали форму "paypal" (id = "paypal"). Смотрите ниже:

Затем поместите изображение тега с анимированным GIF, своего рода счетчик прогресса. Итак, теперь вот важная часть: добавьте небольшую функцию javacript на страницу, которая будет отвечать за размещение формы PayPal на сервере PayPal. Для примера смотрите следующее:

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

Итак, теперь все, что вам нужно сделать, это вызвать эту функцию submitform () из тега body страницы, как показано ниже:

<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, давая вам эффект, который вы ищете.

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

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

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