1

まず第一に、私はasp.net、jquery、およびすべてのWeb側のものにまったく慣れていません。どれもよくわかりません。私はいくつかの調査を試みましたが、私の問題を理解できません。

テンプレートを購入しましたが、現在、この壊れたコードを実行して機能させようとしています。

お問い合わせフォームがあります。フィールドは次のようになります。

<label class="name">
    <input type="text" value="Name:">
    <span class="error">*This is not a valid name.</span>
        <span class="empty">*This field is required.</span>
    <span class="clear"></span>
</label>

3 つまたは 4 つのフィールドがすべて同じですが、1 つがテキストエリアです。

私の問題は、テキストフィールドから値を取得していないことだと思います。それか、値を正しく送信していません。

これは私の送信機能です:

submitFu: function () {
    _.validateFu(_.labels)
    if (!_.form.has('.' + _.invalidCl).length)
        $.ajax({
                type: "POST",
                url: _.mailHandlerURL,
                dataType: 'json',
                data: {
                    'name': +_.getValFromLabel($('.name', _.form)),
                    'email': +_.getValFromLabel($('.email', _.form)),
                    'phone':  _.getValFromLabel($('.phone', _.form)),
                    'message': +_.getValFromLabel($('.message', _.form)),
                    'from': 'email@email.net',
                    'smtpMailServer': + _.smtpMailServer,
                    'stripHTML': 'false'
                    },
                success: function () { _.showFu() },
                error: function (data) { alert(data.responseText); }
})

そして、これは私の「getValFromLabel」関数ですが、私は本当に理解していません:

getValFromLabel: function (label) {
        var val = $('input,textarea', label).val()
       , defVal = label.data('defVal')
        return label.length ? val == defVal ? 'nope' : val : 'nope'
}

送信機能を実行すると、「NaN」がalert(+_.getValFromLabel($('.message', _.form)))表示されますが、これはまったく意味がありません。そのため、値を正しく取得していないと思います。お問い合わせフォームは、差出人アドレスがないというエラーを返します。

何か案は???

4

2 に答える 2

2

これはhttp://bassistance.de/jquery-plugins/jquery-plugin-validation/を使用した基本的なコードです

<form method="post" class="cmxform" id="form" action="form.php">
    <fieldset>
        <legend>Login Form (Enter "foobar" as password)</legend>
        <p>
            <label for="user">Name</label>
            <input id="name" name="name" title="Please enter your name (at least 3 characters)" class="required" minlength="3" />
        </p>
        <p>
            <label for="email">Email</label>
            <input id="email" name="email" title="Please enter a valid email address" class="required email"/>
        </p>
        <p>
            <label for="phone">Phone</label>
            <input id="phone" name="phone" title="Please enter a valid phone number" class="required digits" minlength="10" maxlength="15" />
        </p>
        <p>
            <label for="phone">comment</label>
            <textarea id="comment" name="comment" title="Please enter a comment" class="required" rows="10" cols="50" ></textarea>
        </p>
        <p>
            <input class="submit" type="submit" value="Submit"/>
        </p>
    </fieldset>
</form>

ここにjavascript/jqueryコードがあります

jQuery("#form").validate({
    submitHandler: function() {
        $.ajax({
            type: "POST",
            url: "EMAIL.ashx",//or you can code behind web method/webservice
            dataType: 'json',
            data: {
                'name': + $("#name").val(),
                'email': + $("#email").val(),
                'phone':  $("#phone").val(),
                'message': + $("#comment").val(),
                'from': 'email@email.net',
                'smtpMailServer': + $("#smtpserver").val(),
                'stripHTML': 'false'
                },
            success: function () { alert("email sent successfully") },
            error: function (data) { alert(data.responseText); }
        })              
    }
});

既にコード/サンプルが上に投稿されているため、ashx コードに URL を指定する必要があります。これは含めません。また、smtp の詳細を渡すことはお勧めしません。web.config から csharp コードで詳細を取得します。

于 2012-08-06T13:40:10.643 に答える
1

Web 言語にあまり慣れていない場合は、ASP .NET コントロールと C# を使用して電子メールを送信してみてください。

マークアップは次のようになります。

<asp:TextBox ID="Name" runat="server"></asp:TextBox>
<asp:Button ID="SendButton" runat="server" Text="Send" />

明らかに、これは「名前」の値を格納するための単一のテキスト ボックスと、メールを送信するためのボタンのためだけです。必要に応じて、さらにいくつかのテキスト ボックスを追加します。

次に、SendButton_Click イベントで、次のようなコードを使用します。

string MailBody;
MailMessage myMessage = new MailMessage();
SmtpClient smtpC = new SmtpClient();

myMessage.Subject = "Subject for Email";
myMessage.From = new MailAddress("youremailhere@provider.com", "Your Name");
myMessage.To.Add(new MailAddress("destinationemail@provider.com", "Receiver Name");

mailBody = Name.Text; //Get information from webpage

smtpC.send(myMessage); //Send the email via smtp

C# ファイルの先頭に次の参照を配置してください。

using System.IO;
using System.Net.Mail;

また、SMTP クライアントを使用するには、次のように web.config ファイルに構成を追加する必要があります。

<system.net>
  <mailSettings>
    <smtp deliveryMethod="Network" from="youremail@gmail.com">
      <network enableSsl="true" userName="youremail@gmail.com"  password="yourpassword" host="smtp.gmail.com"/>
  </smtp>
</mailSettings>

于 2012-08-06T13:12:40.927 に答える