簡體   English   中英

如何使用asp.net處理HTML頁面中的表單數據

[英]How to handle form data in html page using asp.net

有時,我需要處理HTML唯一網站的聯系表單中的數據,且具有托管限制,不能運行asp.net代碼。

在這種情況下如何處理數據? (在較簡單的情況下,發送電子郵件)

為此,我通常將數據重定向到asp.net處理程序(位於運行asp.net的另一台服務器上)。

這是我的方法:

html形式:

        <form name="ajax-form" id="ajax-form" action="http://somedomain.com/handler.ashx" method="post">
            <label for="name">
                Nome: *
                <span class="error" id="err-name">please enter your name</span>
            </label>
            <input name="name" id="name" type="text" />
            <label for="email">
                E-Mail: *
                <span class="error" id="err-email">please enter your e-mail</span>
                <span class="error" id="err-emailvld">the e-mail does not have a valid format</span>
            </label>
            <input name="email" id="email" type="text" />
            <label for="message">Message:</label>
            <textarea name="message" id="message"></textarea>
            <div id="button-con"><button class="send_message" id="send">Send</button></div>
            <div class="error text-align-center" id="err-form">Error on form. Please check!</div>
            <div class="error text-align-center" id="err-timedout">Time out connecting to server...</div>
            <div class="error" id="err-state"></div>
        </form>

加載jQuery后,我添加以下javascript:

jQuery(document).ready(function ($) {
    $('#send').click(function(){ 
        $('.error').fadeOut('slow'); 

        var error = false; 

        var name = $('input#name').val(); 
        if(name == "" || name == " ") {
            $('#err-name').fadeIn('slow'); 
            error = true; 
        }

        var email_compare = /^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$/; 
        var email = $('input#email').val(); 
        if (email == "" || email == " ") { 
            $('#err-email').fadeIn('slow'); 
            error = true;
        }else if (!email_compare.test(email)) { 
            $('#err-emailvld').fadeIn('slow'); 
            error = true;
        }

        if(error == true) {
            $('#err-form').slideDown('slow');
            return false;
        }

        var obj = {};
        obj.name = name;
        obj.email = email;
        obj.message = $("#message").val();

        var jsonData = JSON.stringify(obj);

        console.log(jsonData);
        $.ajax({
            type: "POST",
            url: $('#ajax-form').attr('action'),
            data: jsonData,
            timeout: 6000,
            error: function(request,error) {
                if (error == "timeout") {
                    $('#err-timedout').slideDown('slow');
                }
                else {
                    $('#err-state').slideDown('slow');
                    $("#err-state").html('An error occurred: ' + error + '');
                }
            },
            success: function() {
                $('#ajax-form').slideUp('slow');
                $('#ajaxsuccess').slideDown('slow');
            }
        });

        return false; 
    });
});

最后,我的handler.ashx的代碼:

<%@ WebHandler Language="VB" Class="Handler" %>

Imports System.Web.Script.Serialization
Imports System.IO

Public Class Handler : Implements IHttpHandler

    Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
        context.Response.ContentType = "text/plain"

        Try
            Dim strJson As String = New StreamReader(context.Request.InputStream).ReadToEnd()
            Dim objUsr As userInfo = Deserialize(Of userInfo)(strJson)

            If objUsr IsNot Nothing Then
                Dim name As String = objUsr.name
                Dim email As String = objUsr.email
                Dim message As String = objUsr.message

                'here you treat you data, some send email function using the data collected
                context.Response.Write(String.Format("Name :{0} , email={1}, message={2}", name, email, message))
            Else
                context.Response.Write("No Data")
            End If

        Catch ex As Exception
            context.Response.Write("Error :" & ex.Message)
        End Try
    End Sub

    Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property

    Public Class userInfo
        Public Property name As String
        Public Property email As String
        Public Property message As String
    End Class

    Public Function Deserialize(Of T)(ByVal context As String) As T
        Dim jsonData As String = context
        Dim obj = CType(New JavaScriptSerializer().Deserialize(Of T)(jsonData), T)
        Return obj
    End Function

End Class

我希望這對您有幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM