Я отправляю данные через 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 для передачи других значений обработчику других событий, и все работает нормально. В основном это обновление базы данных.
Может ли кто-нибудь увидеть, есть ли какие-либо проблемы с кодом здесь? Мне кажется, что лучше всего сделать это полностью на стороне сервера, поэтому, если это лучший вариант, то я более чем готов отдать это.
Заранее спасибо
Не попадание в точку останова кажется странным. Можете ли вы захватить запрос, а затем скопировать URL-адрес в браузер и нажать его таким образом и посмотреть, удалась ли точка останова? – Amit
или вы можете скопировать запрос? – Amit
У меня есть Fiddler, поэтому, возможно, проверьте запрос там, если это поможет – Ortund