您在jQuery JSON帖子中缺少内容类型:
contentType: "application/json; charset=utf-8",
请参阅本文。当我遇到类似的问题时,它对我很有帮助:
使用jQuery直接调用ASP.NET AJAX页面方法( 不再可用 )- 来自Internet存档: 使用jQuery直接调用ASP.NET AJAX页面方法
您无需将scriptManager配置为EnablePageMethods。
另外,您无需在WebMethod中反序列化JSON序列化的对象。让ASP.NET为您做到这一点。将您的WebMethod的签名更改为此(请注意,我在单词“
to”和“ from”后面附加了“
Email”,因为它们是C#关键字,并且不宜使用与关键字相同的名称来命名变量或参数。将需要相应地更改您的Javascript,以便JSON.stringify()可以正确序列化您的字符串:
// Expected JSON: {"toEmail":"...","fromEmail":"...","message":"..."}[WebMethod]public static bool EmailFormRequestHandler(string toEmail, string fromEmail, string message){ // TODO: Kill this pre... // var serializer = new JavascriptSerializer(); //stop point set here // serializer.RegisterConverters(new[] { new DynamicJsonConverter() }); // dynamic obj = serializer.Deserialize(json, typeof(object)); try { var mailMessage = new MailMessage( new MailAddress(toEmail), new MailAddress(fromEmail) ); mailMessage.Subject = "email test"; mailMessage.Body = String.Format("email test body {0}" + message); mailMessage.IsBodyHtml = true; new SmtpClient(ConfigurationManager.AppSettings["smtpServer"]).Send(mailMessage); return true; } catch (Exception e) { return false; }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)