我正在尝试创建一个WebForm,该WebForm将在提交时发送电子邮件。我创建了一个WebMethod,并正在尝试使用Ajax发布。当我提交时,我的Ajax是404ing。这是我的代码。关于.NET,我是一个初学者,并且正在尝试玩耍。
$(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 = "adhsaj@am.org";
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 + "nn" + comments;
message.IsBodyHtml = false;
SmtpClient client = new SmtpClient(SERVER);
client.Send(message);
Console.WriteLine(message);
}
}
看起来问题是URL。客户端无法找到Web方法,因为URL不存在。尝试更改
url: "SendMessage.aspx/SendMessages"
to
url: "Send/SendMessages"
尝试将您的URL更新为Send.aspx/SendMessages
也最好使用
JSON.stringify({ first_name : first_name, last_name : last_name, email : email, comments : comments })
您没有以该方法需要的格式传递所需的数据。例如,我看到第一个参数是ASPX方法上的第一个参数,但是您的JSON在字符中具有空间。请还要更正并检查。
如果您检查了URL,并且看起来还不错,那么路由配置可能与您的Ajax调用混乱。您必须将其添加到RouteConfig.cs
:
routes.Ignore("{page}.aspx/{*webmethod}");