2017-09-30 21 views
0

AJAXを使ってCSページにあるメソッドを呼びたいと思います。ここでAJAXを使用してCSページからメソッドを呼び出す方法は?

は私の設計コードである:ここで

<!-- Name --> 
<input type="text" name="name" id="name" required="required" class="form" placeholder="Name" /> 
<!-- Email --> 
<input type="email" name="mail" id="mail" required="required" class="form" placeholder="Email" /> 
<!-- Subject --> 
<input type="text" name="subject" id="subject" required="required" class="form" placeholder="Subject" /> 
<!-- Message --> 
<textarea name="message" id="message" class="form textarea" placeholder="Message"></textarea> 
<!-- Send Button --> 
<button type="button" id="submit" name="submit" class="form-btn semibold">Send Message</button> 

はアヤックス今

$(document).on("click", "#submit", function (e) { 
    $.ajax({ 
     type: "POST", 
     url: "OakscrollWebService.cs/SendMail", 
     dataType: "json", 
     data: JSON.stringify({ name: $('#name').val(), email: $('#mail').val(), subject: $('#subject').val(), message: $('#message').val() }), 
     contentType: "application/json; charset=utf-8", 
     success: function (data) { 
      alert(data.d); 
     }, 
     failure: function (data) { 
      alert("something went wrong"); 
      //console.log(msg); 
     } 
    }); 
}); 

ですが、私はASMXページ(Webサービス)を追加します。私がApp_CodeフォルダにあるCSファイルへの参照呼び出しを与えたということで、ここにコードがあります。 CSファイル内

<%@ WebService Language="C#" CodeBehind="~/App_Code/OakscrollWebService.cs" Class="OakscrollWebService" %> 

ここで私はここに(私は以前あなたを示しているコード)AJAXを使用してSendMailメソッドを呼び出すとする場所からのCSファイルがあるメソッドのコード

[WebMethod] 
public static void SendMail(string name, string email, string subject, string message) 
{ 
    //Thread.Sleep(10000); 
    // Gmail Address from where you send the mail 
    var fromAddress = "[email protected]"; 
    // any address where the email will be sending 
    var toAddress = email.Trim(); 
    //Password of your gmail address 
    const string fromPassword = "*********"; 
    // Passing the values and make a email formate to display 
    string sub = subject.Trim(); 
    string body = "From: " + name.Trim() + "\n"; 
    body += "Email: " + email.Trim() + "\n"; 
    body += "Subject: " + subject.Trim() + "\n"; 
    body += "Message: \n" + message.Trim() + "\n"; 
    // smtp settings 
    var smtp = new System.Net.Mail.SmtpClient(); 
    { 
     smtp.Host = "smtp.gmail.com"; 
     smtp.Port = 587; 
     smtp.EnableSsl = true; 
     smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; 
     smtp.Credentials = new NetworkCredential(fromAddress, fromPassword); 
     smtp.Timeout = 20000; 
    } 
    // Passing values to smtp object 
    smtp.Send(fromAddress, toAddress, sub, body); 
} 

これはコンテンツです私はajaxでsendmailメソッドを呼び出していました。しかし、 "403 forbidden"や "500 server not found"のような問題に直面し、AJAXを使ってsendmailメソッドを呼び出すことはできません。

+0

デバッガはajax呼び出しで 'SendMail' csコードを打つのですか?それを一度確認してください。また、csコードの中に 'try {...} catch(){...}'を入れて、コードにsmtp例外や一般的な例外がないかどうかを確認してください。 –

+0

sendmailメソッドがデバッグを取得していません。私はそれにデバッグを入れたが、電話していない。 –

+0

この問題はどうやって解決しましたか? –

答えて

0

こんにちは、私はあなたがファイル拡張子の代わり.cs.asmxを持っているあなたのURLを変更私はそれをテストしたとき、私は見つかりませんでしたページを意味する404エラーを得ていたので(ラインurl: "OakscrollWebService.asmx/SendMail",からurl: "OakscrollWebService.cs/SendMail",を変更)する必要があると思います。 JSONLintを使用してJSONが正しいことを確認する変数を作成することもできます。

$(document).on("click", "#submit", function (e) { 
     var data = '{"name":"' + $('#name').val() + '", "email":"' + $('#mail').val() + '", "subject":"' + $('#subject').val() + '", "message":"' + $('#message').val() + '"}'; //Optional to check your JSON 
     $.ajax({ 
      type: "POST", 
      url: "OakscrollWebService.asmx/SendMail", 
      dataType: "json", 
      data: JSON.stringify({ name: $('#name').val(), email: $('#mail').val(), subject: $('#subject').val(), message: $('#message').val() }), 
      contentType: "application/json; charset=utf-8", 
      success: function (data) { 
       alert(data.d); 
      }, 
      failure: function (data) { 
       alert("something went wrong"); 
       //console.log(msg); 
      } 
     }); 
    }); 
    }); 

幸運!

関連する問題