Отладка триггеров MySQL

Я обнаружил пару проблем, связанных с вызовами MVC ajax GET с помощью JQuery, которые вызвали у меня головные боли, поэтому здесь обсуждались решения.

  1. Обязательно включите тип данных «json» в вызов ajax. Это автоматически проанализирует возвращаемый объект JSON для вас (если сервер вернет действительный json).
  2. Включите JsonRequestBehavior.AllowGet; без этого MVC возвращал ошибку HTTP 500 (с dataType: json, указанным на клиенте).
  3. Добавьте cache: false в вызов $ .ajax, иначе вы в конечном итоге получите HTTP 304 ответов (вместо HTTP 200 ответов), и сервер не будет обрабатывать ваш запрос.
  4. Наконец, json чувствителен к регистру, поэтому оболочка элементов должна соответствовать на стороне сервера и на стороне клиента.

Пример JQuery:

$.ajax({
  type: 'get',
  dataType: 'json',
  cache: false,
  url: '/MyController/MyMethod',
  data: { keyid: 1, newval: 10 },
  success: function (response, textStatus, jqXHR) {
    alert(parseInt(response.oldval) + ' changed to ' + newval);                                    
  },
  error: function(jqXHR, textStatus, errorThrown) {
    alert('Error - ' + errorThrown);
  }
});

Пример кода MVC:

[HttpGet]
public ActionResult MyMethod(int keyid, int newval)
{
  var oldval = 0;

  using (var db = new MyContext())
  {
    var dbRecord = db.MyTable.Where(t => t.keyid == keyid).FirstOrDefault();

    if (dbRecord != null)
    {
      oldval = dbRecord.TheValue;
      dbRecord.TheValue = newval;
      db.SaveChanges();
    }
  }

    return Json(new { success = true, oldval = oldval},
                JsonRequestBehavior.AllowGet);
}
14
задан Justin 25 January 2012 в 09:23
поделиться