Ajax调用表现不佳

时间:2014-04-16 20:01:35

标签: jquery asp.net ajax

我正在尝试通过处理程序发送带有ajax的邮件。而且我不知道为什么......

有人可以指导我发表文章或其他解释如何调查" ajax打电话?

项目 - > App_Code-> Mail.cs(发送邮件)

  public static bool SendMail(string email)
    {
        DatingUser du = BL.BlContent.GetUser_ByEmail(email);
        if (du != null) 
        {//  Email sending
            string thePassword = du.Password;
        string eBody = "<div style='direction:rtl;'><b>your password is:  </b>" +thePassword;
        MailMessage MyMailMessage = new MailMessage("XXX@gmail.com", "XXX@gmail.com", "message", eBody);
              MyMailMessage.IsBodyHtml = true;
              try
              {
                  SmtpClient SMTPServer = new SmtpClient();
                  SMTPServer.Send(MyMailMessage);
                  return true;
              }
              catch
              {
                  return false;
              }


        }
        return false;
    }

项目 - &GT; Handlers-&GT; forgotPass_sendMail.ashx

   public void ProcessRequest(HttpContext context)
    {
        String emailToSendTo = context.Request.Form.Get("email");
        bool mailSent = Mail.SendMail(emailToSendTo);

        if (mailSent)
        {            
            context.Response.Write("true");
        }
        else
        {
            context.Response.Write("false");
        }
    }

项目 - &GT;控制 - &GT; LogIn.ascx

 <asp:Button runat="server" ID="btn_forgotPass" Text="send" ValidationGroup="forgot" OnClientClick="EmailForgotPass(); " />
 function EmailForgotPass() {
    var settings = {
        'data': $('#email_forgotPass').val(),
        'url': "~/Handlers/forgotPass_sendMail.ashx",
        'contentType': 'application/x-www-form-urlencoded; charset=UTF-8'
    };
    SendMail(settings);
}

function SendMail(settings) {
    var success = false;
    $.ajax({
        type: "POST",
        contentType: settings.contentType,
        data: settings.url,
        dataType: "json",
        async: true,
        success: function (data) {
            success = true;
            $('#mailStatus').html('<p>Your password has been sent</p>');
        },
        error: function (data) {              
            success = false;
            $('#mailStatus').html('<p>Something wen\'t wrong</p>');
        }
    });
    return false;

我做错了什么? 任何建议将不胜感激,以及关于如何探索ajax错误的文章&#34;

2 个答案:

答案 0 :(得分:0)

尝试将此添加到您的错误块

error: function (data) {    
        alert(data);          
        success = false;
        $('#mailStatus').html('<p>Something wen\'t wrong</p>');
    }

如果服务器返回错误,这将为您提供一个错误消息框。否则,您可以使用Chrome等具有开发人员工具的浏览器,您可以查看与您的ajax调用相关的请求和响应数据。

答案 1 :(得分:0)

网址错误我认为

$.ajax(
{
    type: "POST",
    contentType: settings.contentType,
    data: settings.data,//I changed this line of code <------------
    url: settings.url,//And this one <----------------------
    dataType: "json",
    async: true,
    success: function (data) {
        success = true;
        $('#mailStatus').html('<p>Your password has been sent</p>');
    },
    error: function (data) {              
        success = false;
        $('#mailStatus').html('<p>Something wen\'t wrong</p>');
    }

您可以检查服务器上的PHP_error.log文件。这将为您提供错误消息。(默认情况下,它位于Linux上的IIS上的c:\ Windows \ Temp中我无法告诉)

你还有一些错误的代码行如下:

String emailToSendTo = context.Request.Form.Get("email");
//your doing a POST request not a GET

也许应该是这样的:

String emailToSendTo = context.Request.Form.Post("email");

我唯一不喜欢/不确定的另一件事是

public void ProcessRequest(...)

我不认为这是你通过ASP.Net发送AJAX请求的方式。我的意思是我不认为这个页面加载时甚至会调用此函数。