2012-12-24 3 views
0

Я отправляю данные через ajax для сохранения в отформатированном и сохраненном в моей базе данных. Я отправляю данные через JSON в 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

У меня есть Fiddler, поэтому, возможно, проверьте запрос там, если это поможет – Ortund

ответ

0

«успеха: window.location = "Inbox.aspx"'

window.location = "Inbox.aspx" оценивается сразу и страница включается до того, как сделан запрос.

Используйте функцию.

Смежные вопросы