Отправка поста с помощь Javascript

Возможно отправка поста на javascript покажется кому-то тривиальной задачей, но для некоторых, особенно начинающий програмистов моя заметка может оказаться полезной. Например сам я, пришел в Web программирование из C#, и первое время при создании сайтов я вообще не использовал javascript, все делел на Asp.Net, в том числе посты. Первый раз мне понадобилось сделать подобную штуку в процессе создания интернет магазина. Корзина работала полностью на ASP.Net и все покупки хранились в сессии. Проблема появилась когда нужно быть преребросить пользователя на сайт платежной системы при этом передав ей параметы покупок: стоимость, колличество и т.д. Платежная система принимала только посты. А мне нужно было именно «перебросить» пользователя, т.е. выполнить редирект на сайт платежной системы. По началу я пытался сделать пост средствами ASP.Net — HttpWebRequest, но в этом случае не происходила переадресация, а если делать переадресацию Response.Redirect() то, соответственно нельзя было передать пост. В конечном итоге я понял что в данном случае нет выхода кроме как отправить пост с помощью javascript, благо, сделать это совсем не сложно, и я хотел бы показать пример как это сделел я:

<html>
    <head>
        <title>Javascript Post Example</title>
    </head>
    <body>

        <form>
            <input type="button" value="Login" onclick="doPost()" />
        </form>
        
        <script type="text/javascript" language="javascript">
        function doPost()
        {
            // создаем форму, указывая адрес получателя
            var form = GenerateFormElement('http://win.mail.ru/cgi-bin/auth');
            document.body.appendChild(form);
            // добавляем параметры
            AddFormField(form,'Login','leshaaa');
            AddFormField(form,'Domain','mail.ru');
            AddFormField(form,'Password','password123987');
            // отправляем форму
            form.submit();
        }

        function AddFormField(form, name, value)
        {
            form.appendChild(GenerateInputElement(name, value));
        }

        function GenerateFormElement(action)
        {
            var form = document.createElement('form');
            form.setAttribute('action', action);
            form.setAttribute('method', 'post');
            return form;
        }

        function GenerateInputElement(name, value)
        {
            var input = document.createElement('input');
            input.setAttribute('type', 'hidden');
            input.setAttribute('name', name);
            input.setAttribute('id', name);
            input.setAttribute('value', value);
            return input;
        }
        </script>

    </body>
</html>


Данный пример иллюстрирует отправку поста на вымышленный адрес domain.com/login, передавая параметры Login, Domain, Password. На основе этого примера вы можете сделать, например, кнопочку которая будет вас удобно логинить на ваш почтовый ящик.
Tags:
javascript, пост с редиректом

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.