2017-03-13 7 views
0

私は送信時に電子メールを送信するWebフォームを作成しようとしています。私はWebメソッドを作成し、Ajaxで投稿しようとしています。提出すると、私のajaxは404ingです。ここに私のコードです。私はネットでは初心者で、ちょっと遊んでみようとしています。WebMethod Ajax Call 404が見つかりません

$(document).ready(function() { 
$('.validate-form').submit(function (e) { 
    e.preventDefault(); 
    var first_name = document.getElementById("first_name").value; 
    var last_name = document.getElementById("last_name").value; 

    var email = document.getElementById("email").value; 
    var data = "{'first name': '" + first_name + "', 'last name': '" + last_name + "', 'fromEmail': '" + 
       email + "'}"; 
    console.log("data", data) 
    $.ajax({ 
     type: "POST", 
     url: "SendMessage.aspx/SendMessages", 
     data: data, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json" 
    }).fail(function (xhr, ajaxOptions, thrownError) { 
     console.log(xhr.status); 
     console.log(thrownError); 
    }) 
}); 
public partial class Send : System.Web.UI.Page 
{ 
    [WebMethod] 
    public static void SendMessages(string first_name, string last_name, string email, string comments) 
    { 

     const string SERVER = "zebra.aa.org"; 
     const string TOEMAIL = "[email protected]"; 
     MailAddress from = new MailAddress(email); 
     MailAddress to = new MailAddress(TOEMAIL); 
     MailMessage message = new MailMessage(from, to); 

     message.Subject = "Web Site Contact Inquiry from " + first_name + last_name; 
     message.Body = "Message from: " + first_name + last_name + " at " + 
         email + "\n\n" + comments; 
     message.IsBodyHtml = false; 
     SmtpClient client = new SmtpClient(SERVER); 
     client.Send(message); 
     Console.WriteLine(message); 
    } 
} 
+0

あなたのwebmethodが 'SendMessage.aspx'を探していますが、あなたのページが単に「Send」という名前になっているようですね? 'public partial class Send:System.Web.UI.Page' – Graham

答えて

0

問題はURLであるように見えます。 URLが存在しないため、クライアントはWebメソッドを見つけることができません。あなたがで必要なデータを渡していません。また

JSON.stringify({ first_name : first_name, last_name : last_name, email : email, comments : comments }) 

を使用する方が良いでしょうSend.aspx/SendMessages

にURLを更新しよう

url: "Send/SendMessages" 
+0

私はそれを提案されたURLに変更しようとしましたが、それでも404です。私のフォームはSendMessage.aspxにあり、バックエンドコードはSendMessage.aspx.csにあります。 –

0

url: "SendMessage.aspx/SendMessages" 

を変更してみてくださいメソッドがそれを必要とする形式。たとえば、最初のパラメータはaspxメソッドのfirst_nameですが、JSONには文字にスペースが含まれています。これも修正して確認してください。

+0

URLが更新されず、JSONが修正されました。問題への別のアプローチをとることにしました。 –

関連する問題