Мне пришлось прибавить умножение на -1 *
к сумме строки состояния и панели навигации, потому что она уходила на ту высоту за пределы экрана,
self.tableView.setContentOffset(CGPointMake(0 , -1 *
(self.navigationController!.navigationBar.height +
UIApplication.sharedApplication().statusBarFrame.height) ), animated:true)
Content-type
Вам не нужно указывать этот тип содержимого при вызовах действий контроллера MVC. Специальный тип содержимого «application / json; charset = utf-8» необходим только при вызове ASP.NET AJAX «ScriptServices» и методов страницы. Тип содержимого jQuery по умолчанию "application / x-www-form-urlencoded" подходит для запроса действия контроллера MVC.
Подробнее об этом типе содержимого здесь: Взлом JSON и как ASP.NET AJAX 1.0 предотвращает эти атаки
Данные
Данные верны в том виде, в каком они у вас есть. Если передать jQuery объект JSON, как и у вас, он будет сериализован как PatientID = 1 в данных POST. Эта стандартная форма - это то, как MVC ожидает параметры.
Вам нужно только заключить параметры в кавычки, например "{'PatientID': 1}" когда вы используете службы ASP.NET AJAX. Они ожидают, что будет проанализирована одна строка, представляющая объект JSON, а не отдельные переменные в данных POST.
JSON
Это не проблема в данном конкретном случае, но это хорошая идея, чтобы привыкнуть цитирования любых строковых ключей или значений в вашем объекте JSON. Если вы непреднамеренно используете зарезервированное ключевое слово JavaScript в качестве ключа или значения в объекте, не заключая его в кавычки, вы столкнетесь с проблемой, которая сбивает с толку при отладке.
И наоборот, вам не нужно указывать числовые или логические значения в кавычках. . Всегда безопасно использовать их непосредственно в объекте.
Итак, если вы действительно хотите выполнить POST вместо GET, ваш вызов $ .ajax () может выглядеть так:
$.ajax({
type: 'POST',
url: '/Services/GetPatient',
data: { 'patientID' : 1 },
dataType: 'json',
success: function(jsonData) {
alert(jsonData);
},
error: function() {
alert('Error loading PatientID=' + id);
}
});
Единственное различие, которое я вижу, заключается в том, что getJSON выполняет запрос GET вместо POST.
.getJson - это просто оболочка для .ajax, но она обеспечивает более простую подпись метода, поскольку некоторые настройки установлены по умолчанию, например dataType для json, type для получения и т. д.
NB .load, .get и .post также являются простыми оболочками для .ajax метод
Заменить
data: { patientID: "1" },
на
data: "{ 'patientID': '1' }",
Дополнительная литература: 3 ошибки, которых следует избегать при использовании jQuery с ASP.NET
contentType: 'application/json; charset=utf-8'
Это нехорошо. По крайней мере, у меня это не работает. Другой синтаксис в порядке. Указанный вами параметр имеет правильный формат.