2012-12-24 82 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"立即進行評估,並提出的任何請求之前切換頁面。

使用函數。