Вызов метода веб-службы ASP.NET из JavaScript - PullRequest
1 голос
/ 01 сентября 2011

У меня есть веб-сервис:

[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 ]

5 голосов
/ 01 сентября 2011

Использовать библиотеку jQuery. Это заставляет аякс звонить кусочком пирога. Затем следуйте этим пунктам:

  1. Добавьте кнопку HTML на свою страницу, чтобы пользователи могли начать процесс ajax, щелкнув по нему
  2. Используйте jQuery, чтобы подключиться к событию нажатия этой кнопки (или 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){}
         });
    });
    

Просто отметьте, что вы должны сделать объект JSON из ваших параметров, а имя свойств JSON должно совпадать с именем параметров веб-службы. Также обратите внимание, что возвращаемое значение веб-службы будет доступно вам как объект r.d, переданный для успешного обратного вызова вызова ajax.

0 голосов
/ 26 апреля 2012

Вы должны передать три параметра из кодовой страницы cs, позвонив следующим образом:

service.SendMail(name, email, message);
0 голосов
/ 01 сентября 2011

Вам нужно сделать что-то очень важное: добавьте атрибут ScriptService к классу, чтобы его можно было вызывать из Javascript, как в этом примере:

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

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

0 голосов
/ 01 сентября 2011

Возможно, вы захотите взглянуть на возможности jQuery ajax .

0 голосов
/ 01 сентября 2011

Если это страница aspx, вы можете добавить ScriptManager с атрибутом EnablePageMethods = "true", а затем вызвать PageMethods.sendMail (имя, адрес электронной почты, сообщение, onSuccess, onFail);

...