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

Refresh

November 2018

Views

916 time

2

I am posting values to from an ASP.NET website to a completely different site (Paypal actually). I accomplish this by returning a page to the user that has all the hidden form inputs written and then a Javascript function that automatically submits the form.

The process is supposed to be seamless, but the blank page is noticeable for the couple seconds it shows up. Users are just supposed to click the button on the ASP.NET page, then be redirected to Paypal. But I inject this blank page in the middle to post the variables in the middle (variables like billing info, order items, etc). The blank page is too noticable and am hoping for either a better way of doing this or suggestions on making the process seem more seamless.

Here is the method I am using:

    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();
    }

Any suggestions in making this more seamless or more enjoyable to the user? Thanks!

1 answers

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 давая вам эффект ваши ищем.

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

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