Отправка формы в обработчик не работает - PullRequest
0 голосов
/ 13 октября 2009

Я пытаюсь отправить форму на страницу обработчика, но сейчас ничего не работает, она даже не попадает в обработчик ...

Вот мой код:

<form action="Unsubscription.ashx?actionmethod=subscribe" method="get" >
<div class="h1">
<input type="text" class="input" value="enter your e-mail" name="ekey"  />
<input type="submit" value="Submit" />
</div>
</form>

код обработчика:

public void ProcessRequest(HttpContext context)
{
    try
    {
        string email = context.Request.Params["ekey"];
        switch (context.Request.Params["actionmethod"])
        {

            case "subscribe":
                NewsLetter.Subscribe(email);
                break;
            case "unsubscribe":
                NewsLetter.Unsubscribe(email);
                context.Response.ContentType = "text/html";
                context.Response.Write("your subscription has been successfully canceled. thanks.<br/><a href='http://www.kayatax.com'><b>home page</b></a>");
                break;
        }


    }
    catch         {
        context.Response.ContentType = "text/html";
        context.Response.Write("This e-mail doesn't exist in our database. Thanks.<br/><a href='http://www.kayatax.com'><b>Home Page</b></a>");
    }
}

Ответы [ 3 ]

0 голосов
/ 13 октября 2009

Если у вас проблемы с рендерингом на стороне браузера, и вы не запускаете обработчик на стороне сервера, я бы сначала исследовал сторону браузера. Посмотрите, что передается по проводам: в Firebug включите панель «Сеть», перезагрузите страницу, отправьте форму, а затем посмотрите на «Запрос» на панели «Сеть». Наведите указатель мыши на первый узел (запрос на страницу обработчика форм) и убедитесь, что URL-адрес запроса соответствует ожидаемому. Затем разверните узел и посмотрите заголовки запроса.

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

Кстати, вы должны не использовать метод GET для отправки форм, которые изменяют данные на сервере; используйте POST для этого. Это немного больше работы, но гораздо безопаснее. GET-запросы должны быть идемпотентными . Если вы используете GET для запуска действия, которое меняет вещи на сервере, вы можете обнаружить, что они изменены, если вы не ожидаете, что они будут . D'ой!

0 голосов
/ 13 октября 2009

Ваша форма использует 'get', который по сути является HTTPGET. Проверьте представленный URL и строку запроса. Должно быть

Unsubscription.ashx?actionmethod=subscribe&ekey=enter%20your%20email

это показывает правильно?

У вас нет названия для кнопки ввода-отправки, но это не должно влиять на то, что вы хотите.

0 голосов
/ 13 октября 2009

Ваш тег </<form> искажен для начала. Сделайте это </form>, как я уверен, вы знаете.

...