2017-09-30 3 views
0

Ich möchte die Methode, die in CS-Seite ist mit AJAX aufrufen.Wie Methode von CS-Seite mit AJAX aufrufen?

Hier ist mein Design-Code:

<!-- Name --> 
<input type="text" name="name" id="name" required="required" class="form" placeholder="Name" /> 
<!-- Email --> 
<input type="email" name="mail" id="mail" required="required" class="form" placeholder="Email" /> 
<!-- Subject --> 
<input type="text" name="subject" id="subject" required="required" class="form" placeholder="Subject" /> 
<!-- Message --> 
<textarea name="message" id="message" class="form textarea" placeholder="Message"></textarea> 
<!-- Send Button --> 
<button type="button" id="submit" name="submit" class="form-btn semibold">Send Message</button> 

Hier ist der Ajax

$(document).on("click", "#submit", function (e) { 
    $.ajax({ 
     type: "POST", 
     url: "OakscrollWebService.cs/SendMail", 
     dataType: "json", 
     data: JSON.stringify({ name: $('#name').val(), email: $('#mail').val(), subject: $('#subject').val(), message: $('#message').val() }), 
     contentType: "application/json; charset=utf-8", 
     success: function (data) { 
      alert(data.d); 
     }, 
     failure: function (data) { 
      alert("something went wrong"); 
      //console.log(msg); 
     } 
    }); 
}); 

Jetzt habe ich die asmx Seite (Web-Service) hinzuzufügen. Da ich den Verweis auf die CS-Datei angegeben habe, die sich im Ordner App_Code befindet, ist hier der Code.

<%@ WebService Language="C#" CodeBehind="~/App_Code/OakscrollWebService.cs" Class="OakscrollWebService" %> 

Hier die cs-Datei aus, wo ich will die Methode Sendmail mit Ajax nennen (dem Code, den ich zuvor gezeigt) und hier ist die Code-Methode in cs-Datei

[WebMethod] 
public static void SendMail(string name, string email, string subject, string message) 
{ 
    //Thread.Sleep(10000); 
    // Gmail Address from where you send the mail 
    var fromAddress = "[email protected]"; 
    // any address where the email will be sending 
    var toAddress = email.Trim(); 
    //Password of your gmail address 
    const string fromPassword = "*********"; 
    // Passing the values and make a email formate to display 
    string sub = subject.Trim(); 
    string body = "From: " + name.Trim() + "\n"; 
    body += "Email: " + email.Trim() + "\n"; 
    body += "Subject: " + subject.Trim() + "\n"; 
    body += "Message: \n" + message.Trim() + "\n"; 
    // smtp settings 
    var smtp = new System.Net.Mail.SmtpClient(); 
    { 
     smtp.Host = "smtp.gmail.com"; 
     smtp.Port = 587; 
     smtp.EnableSsl = true; 
     smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; 
     smtp.Credentials = new NetworkCredential(fromAddress, fromPassword); 
     smtp.Timeout = 20000; 
    } 
    // Passing values to smtp object 
    smtp.Send(fromAddress, toAddress, sub, body); 
} 

Dies ist der Inhalt Ich habe die Sendmail-Methode immer mit Ajax aufgerufen. Aber Probleme wie "403 verboten" und "500 Server nicht gefunden" können die sendmail-Methode nicht mit AJAX aufrufen.

+0

Stimmt der Debugger 'SendMail' CS-Code auf AJAX-Aufruf? Überprüfen Sie das einmal. Setzen Sie auch einen "try {...} catch() {...}" in den cs-Code, um zu überprüfen, ob es im Code irgendwelche SMTP-Ausnahmen oder allgemeine Ausnahmen gibt. –

+0

keine sendmail-Methode wird nicht debuggen. Ich habe Debugging gemacht, aber keinen Anruf bekommen. –

+0

Wie sind Sie mit diesem Problem gegangen? –

Antwort

0

Hallo, ich glaube, Sie müssen Ihre URL ändern, um die Dateierweiterung .asmx statt .cs zu haben (die Linie url: "OakscrollWebService.cs/SendMail",-url: "OakscrollWebService.asmx/SendMail", aus), denn wenn ich es getestet wurde ich einen 404 Fehler bekommen die Seite Bedeutung wurde nicht gefunden. Sie könnten auch eine Variable erstellen, um zu überprüfen, ob Ihr JSON korrekt ist, indem Sie JSONLint verwenden.

$(document).on("click", "#submit", function (e) { 
     var data = '{"name":"' + $('#name').val() + '", "email":"' + $('#mail').val() + '", "subject":"' + $('#subject').val() + '", "message":"' + $('#message').val() + '"}'; //Optional to check your JSON 
     $.ajax({ 
      type: "POST", 
      url: "OakscrollWebService.asmx/SendMail", 
      dataType: "json", 
      data: JSON.stringify({ name: $('#name').val(), email: $('#mail').val(), subject: $('#subject').val(), message: $('#message').val() }), 
      contentType: "application/json; charset=utf-8", 
      success: function (data) { 
       alert(data.d); 
      }, 
      failure: function (data) { 
       alert("something went wrong"); 
       //console.log(msg); 
      } 
     }); 
    }); 
    }); 

Viel Glück!

Verwandte Themen