从JavaScript调用ASP.NET Web服务方法

时间:2011-09-01 12:49:04

标签: javascript asp.net ajax web-services webmethod

我有网络服务:

[WebMethod]
public void SendMail(string _name, string _email, string _message)
{
    //Create Mail Message Object with content that you want to send with mail.
    MailMessage MyMailMessage = new MailMessage("gglebati@example.com", "gglebati@example.com", "This is the mail subject", "Just wanted to say Hello");

    MyMailMessage.IsBodyHtml = false;

    //Proper Authentication Details need to be passed when sending email from gmail
    NetworkCredential mailAuthentication = new NetworkCredential("myxxxxx@gmail.com", "xxxxxxxxx");

    //Smtp Mail server of Gmail is "smpt.gmail.com" and it uses port no. 587
    //For different server like yahoo this details changes and you can
    //get it from respective server.
   SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587);

    //Enable SSL
    mailClient.EnableSsl = true;
    mailClient.UseDefaultCredentials = false;
    mailClient.Credentials = mailAuthentication;

    mailClient.Send(MyMailMessage);
}

我有一个html页面。如何从我的html页面调用此函数? (此功能必须将消息发送到电子邮件)

5 个答案:

答案 0 :(得分:5)

使用jQuery库。它使ajax调用成为一块蛋糕。然后按照以下条款:

  1. 向页面添加HTML按钮,以便人们可以通过单击启动ajax进程
  2. 使用jQuery挂钩该按钮的click事件(或span,或div,或其他任何东西)
  3. 确保您的网络服务具有ScriptService属性(此属性意味着您可以通过JavaScript调用您的服务)
  4. 将项目发送到您的网络服务方法

     $('#buttonId').click(function(){
         // Validating input
         $.ajax({
            type: 'POST',
            url: '/your-web-service-path.asmx/your-method-name',
            data: {} 
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            success: function(r){},
            error: function(e){}
         });
    });
    
  5. 请注意,您必须使用参数创建JSON对象,并且JSON属性的名称应与Web服务参数的名称相匹配。另请注意,当r.d对象传递给ajax调用的成功回调时,Web服务的返回值将可用。

答案 1 :(得分:0)

如果它是一个aspx页面,你可以添加一个带有EnablePageMethods =“true”属性的ScriptManager,然后调用PageMethods.sendMail(name,email,message,onSuccess,onFail);

答案 2 :(得分:0)

也许您想看一下jQuery的ajax功能。

答案 3 :(得分:0)

您需要做一些非常重要的事情:在类中添加ScriptService属性,以便可以从Javascript中调用它,如下例所示:

[ScriptService]
public class SimpleWebService : System.Web.Services.WebService 
{
    // ...
}

http://msdn.microsoft.com/en-us/library/system.web.script.services.scriptserviceattribute.aspx

答案 4 :(得分:0)

你必须通过这样的方式调用cs代码页传递三个参数,

service.SendMail(name, email, message);