2012-12-24 55 views
0

我通过ajax发送数据以保存格式并保存在我的数据库中。我通过JSON将数据发送给HttpHandler,HttpHandler负责处理它。通过ajax发送的数据不会写入数据库

function sendMail() { 
    $.ajax({ 
     type: "POST", 
     url: '<%= ResolveUrl("~/MailAction.ashx") %>', 
     data: { act: "sendMail", to: $('#<%= txtMailTo.ClientID %>').val(), from: $('#<%= lblUserID.ClientID %>').text(), subject: $('#<%= txtMailSubject.ClientID %>').val(), message: $('#<%= txtMailMessage.ClientID %>').val() }, 
     success: window.location = "Inbox.aspx" 
    }); 
} 

不幸的是,我的HttpHandler的设置断点似乎并没有被击中,所以我一直没能调试下面的代码,但我看不出有任何问题:

public void ProcessRequest(HttpContext context) 
    { 
     int mailid = 0; 
     string action = context.Request["act"]; 

     MySqlContext db = new MySqlContext(); 

     string sql = ""; 
     List<MySqlParameter> args = new List<MySqlParameter>(); 

     switch (action) 
     { 
      case "sendMail": 
       string to = context.Request["to"]; 
       int from = int.Parse(context.Request["from"]); 
       string subject = context.Request["subject"]; 

       // 
       // FORMAT TEXT FROM MESSAGE BODY 
       // 
       string message = formatText(context.Request["message"]); 

       int userid = 0; 
       // 
       // GET RECIPIENT ID 
       // 
       sql = "select userid from users where username = @to"; 
       args.Add(new MySqlParameter() { ParameterName = "@to", MySqlDbType = MySqlDbType.VarChar, Value = to }); 

       MySqlDataReader dr = db.getReader(sql, args); 

       if (dr.HasRows) 
       { 
        dr.Read(); 

        userid = dr.GetInt32("userid"); 
       } 
       dr.Close(); 
       args.Clear(); 

       sql = "insert into mail(sender, recipient, datesent, subject, message, status) values (@me, @you, @date, @sub, @msg, @stat)"; 
       args.Add(new MySqlParameter() { ParameterName = "@me", MySqlDbType = MySqlDbType.Int32, Value = from }); 
       args.Add(new MySqlParameter() { ParameterName = "@you", MySqlDbType = MySqlDbType.Int32, Value = to }); 
       args.Add(new MySqlParameter() { ParameterName = "@date", MySqlDbType = MySqlDbType.DateTime, Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }); 
       args.Add(new MySqlParameter() { ParameterName = "@sub", MySqlDbType = MySqlDbType.VarChar, Value = subject }); 
       args.Add(new MySqlParameter() { ParameterName = "@msg", MySqlDbType = MySqlDbType.VarChar, Value = message }); 
       break; 
      } 

     if (args.Count == 0) 
     { 
      db.execute(sql); 
     } 
     else 
     { 
      db.execute(sql, args); 
     } 
    } 

我只能说它做的是它不插入到数据库中。

我使用相同的JavaScript将其他值传递给其他事件的处理程序,一切正常。大多数这些更新到数据库。

任何人都可以看到这里的代码是否有问题吗? 对我来说,它可能是更好的做法,完全在服务器端完成,所以如果这是更好的选择,那么我更愿意放弃这一点。

在此先感谢

+0

没有达到断点似乎很奇怪。你是否能够捕获请求,然后将该url复制到浏览器中并按照这种方式打开并查看断点是否被打中? – Amit

+0

还是可以复制请求? – Amit

+0

我有提琴手,所以可以检查在那里的请求,如果这将有助于 – Ortund

回答

0

的成功:window.location = "Inbox.aspx"'

window.location = "Inbox.aspx"立即进行评估,并提出的任何请求之前切换页面。

使用函数。