Skip to main content
 首页 » 编程设计

c#之使用jquery在ajax的回调中调用ajax

2024年05月29日50duanxz

假设第一个 Ajax 调用会成功(是的,它会成功)。

我在回调中调用 ajax,如下所示

function OnSuccess(data) { 
 
                    $('.modal-footer').show(); 
                    if (data.d[4].toLowerCase().indexOf("success") >= 0) { 
                        $('#resetMsg').html('Password has been sent on ' + data.d[3]); 
                        $.ajax({ 
                            type: "GET", 
                            url: "frmLogin.aspx/SendMail", 
                            data: '{"mailTo":"' + data.d[3] + '","reqName":"' + data.d[0] + '","username":"' + $('#txtUser').val() + '","password":"' + data.d[2] + '"}', 
                            contentType: "application/json; charset=utf-8", 
                            dataType: "json" 
                        }); 
                    } 
                    else { 
                        $('#resetMsg').html(data.d[4]); 
                    } 
                } 

我的 WebMethod 是

[WebMethod] 
    static void SendMail(string mailTo, string reqName, string username, string password) 
    { 
        CommonClient commonSvc = new CommonClient(); 
        bool mailStatus = false; 
        if (mailTo != string.Empty) 
        { 
            bool isValid = CommonUtility.isValidEmail(mailTo); 
            if (!isValid) 
            { 
                mailStatus = false; 
            } 
        } 
        string From = ConfigurationManager.AppSettings["FromEmailID"]; 
        string Subject = "LEAP - password reset"; 
        StringBuilder body = new StringBuilder(); 
        body.Append("Password reset successfully for " + reqName +"<br>"); 
        body.Append("Username: " + username + "<br>"); 
        body.Append("Password: " + password + "<br>"); 
        string ErrorMsg = ""; 
        try 
        { 
            MailAddress from = new MailAddress(From, "HDFCERGO"); 
            MailMessage Mail = new MailMessage(); 
            Mail.To.Add(mailTo); 
            Mail.From = from; 
            Mail.Subject = Subject; 
            Mail.Body = body.ToString(); 
            if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["BCCEmailID"].ToString())) 
            { 
                Mail.Bcc.Add(ConfigurationManager.AppSettings["BCCEmailID"].ToString()); 
            } 
            Mail.IsBodyHtml = true; 
 
            SmtpClient smtpMailObj = new SmtpClient(); 
            smtpMailObj.Send(Mail); 
            Mail.Dispose(); 
            mailStatus = true; 
        } 
        catch (Exception Ex) 
        { 
            ErrorMsg = Ex.Message; 
            mailStatus = false; 
        } 
        finally 
        { 
            LogMailSentDetails(body.ToString(), Subject, mailTo, From, mailStatus == true ? "Success" : "Failed", ErrorMsg); 
        } 

但它永远不会被调用.. :( 是因为我没有正确传递参数吗?请帮助我 :(

请您参考如下方法:

WebMethod 属性需要与public 方法一起使用:

How to: Use the WebMethod Attribute

将其更改为:

[WebMethod] 
public static void SendMail(string mailTo, string reqName, string username, string password) 
{ 
 //rest of code 

您还需要使用 post 方法来调用该方法,因为这是默认行为,而不是 get 方法。